1

我有一个包含自定义列表视图的活动。将自定义列表视图添加到片段

它有一个自定义数组适配器(作为另一个java文件)和一个setter和getter类(作为另一个java文件)。 我想把这个自定义列表视图放入一个片段,但我总是得到错误。 这是我之前主要活动代码: 公共类MainActivity扩展活动实现OnClickListener {

private ListView listView; 
private List<NameBean> items; 
private NamesAdapter objAdapter = null; 
private Button btnGetSelected; 
public static final String[] titles = new String[] { "Strawberry", 
    "Banana", "Orange", "Mixed" }; 
String CheckedItems; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(this, 
      R.array.spinner_array, android.R.layout.simple_spinner_item); 
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinnerAdapter.setNotifyOnChange(true); 

    listView = (ListView) findViewById(R.id.listview); 
    btnGetSelected = (Button) findViewById(R.id.btnget); 
    btnGetSelected.setOnClickListener(this); 

    items = new ArrayList<NameBean>(); 
    for (int i = 0; i < titles.length; i++) { 
     NameBean nb = new NameBean(); 
     nb.setName(titles [i]); 
     nb.setSpinnerAdapter(spinnerAdapter); 
     items.add(nb); 
    } 
    objAdapter = new NamesAdapter(MainActivity.this, items); 
    listView.setAdapter(objAdapter); 
    listView.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      ... 
     } 
    }); 
} 

@Override 
public void onClick(View v) { 

    ... 
     } 
    } 
} 

}

这是我要如何使用它里面的片段:

公共类的内容延伸片段{

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onActivityCreated(savedInstanceState); 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_content, container, false); 

    return view; 
} 
public void setThings(ListAdapter adapter) { 
    ListView listView = (ListView) getView().findViewById(R.id.listview); 
    listView.setAdapter(adapter); 
    } 

}

我定义的另一个片段中,这些参数(在同一个活动):

public class MyListFragment extends Fragment { 

private ListView listView; 
private List<NameBean> items; 
private NamesAdapter objAdapter = null; 
public static final String[] titles = new String[] { "Strawberry", 
    "Banana", "Orange", "Mixed" }; 
String CheckedItems; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_items, 
      container, false); 
    Button button = (Button) view.findViewById(R.id.button1); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      updateDetail(); 
     } 
    }); 
    return view; 
} 

// May also be triggered from the Activity 
public void updateDetail() { 
    ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(getActivity().getApplicationContext(), 
      R.array.spinner_array, android.R.layout.simple_spinner_item); 
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinnerAdapter.setNotifyOnChange(true); 
    items = new ArrayList<NameBean>(); 
    for (int i = 0; i < titles.length; i++) { 
     NameBean nb = new NameBean(); 
     nb.setName(titles [i]); 
     nb.setSpinnerAdapter(spinnerAdapter); 
     items.add(nb); 
    } 
    objAdapter = new NamesAdapter(getActivity(), items); 
    Content fragment = (Content) getFragmentManager() 
      .findFragmentById(R.id.detailFragment); 
    if (fragment != null && fragment.isInLayout()) { 
     fragment.setThings (objAdapter); 
    } 
} 

}

我不知道是什么问题。请帮忙。

+0

如果你甚至没有说出你的错误是什么,你不可能得到帮助。我们也不知道问题是什么。 – rds

回答

0

我不知道这是否是足够的,但是:

  1. Content类应该扩展ListFragment,不只是片段。默认情况下,ListFragment有一个包含ListView的视图层次结构,没有别的;如果您想提供自己的布局,那很好,但您在该布局中的ListView必须具有ID @id/android:list。查看ListFragment javadoc。

  2. 在你setThings(ListAdapter)方法,你应该通过ListAdapter到片段的setListAdapter()方法,而不是直接向ListView,就像这样:

    public void setThings(ListAdapter adapter) { 
        setListAdapter(adapter); 
    } 
    

希望这有助于。

相关问题