我想在String数组中获得选中项列表。我将videoList作为列表视图,并用它实现了baseadapter和overridebaseadapteer,并用checkbox自定义了它
我已经尝试过了,但它给出了nullpointerexception。
btnplay.setOnClickListener(new View.OnClickListener()
{
SparseBooleanArray sparseBooleanArray = videolist.getCheckedItemPositions();
@Override
public void onClick(View v)
{
for(int i =0 ; i<videolist.getCount();i++)
{
if(sparseBooleanArray.get(i))
{
String str = (String) videolist.getItemAtPosition(sparseBooleanArray.keyAt(i));
Toast.makeText(getBaseContext(),str , 3).show();
}
}
}
});
public class VideoAdapter extends BaseAdapter
{
private Context vContext;
public VideoAdapter(Context c)
{
vContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return count;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
System.gc();
LayoutInflater inflater = (LayoutInflater) vContext.getSystemService(vContext.LAYOUT_INFLATER_SERVICE);
View view;
CheckBox cb;
String id = null;
if (convertView == null)
{
view = new View(vContext);
view = inflater.inflate(R.layout.row, null);
cb = (CheckBox) view.findViewById(R.id.checkBox1);
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID);
videocursor.moveToPosition(position);
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
videocursor.moveToPosition(position);
id = videocursor.getString(video_column_index);
video_column_index = videocursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
videocursor.moveToPosition(position);
id += " Size(KB):" + videocursor.getString(video_column_index);
cb.setText(id);
} else
view = convertView;
return view;
}
您在这里重写了许多重要的函数,但没有给它们任何实现。
例如,您有:
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
当您总是返回null
时,如何从ListView
中检索项目?
也许您希望扩展适配器的更完整的实现。尝试使用ArrayAdapter
而不使用空实现重写方法(如getItem
)。你可以很容易地四处搜索如何使用ArrayAdapter
。
试试这个。
yourCheckBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (cb.isChecked() == true) {
String getString = yourCheckBox.get(position).getText; //Here you will get text of checkbox
yourList.add(getString); // Here you have to add your string value to list.
}
}
});
默认情况下,列表视图的选择模式设置为choice_mode_SINGLE,因此需要将选择模式设置成单个或多个,以便getCheckedItemPositions()返回非空的SparseBooleanArray。
希望这能帮助到别人!!