我正在尝试使用复选框实现listview。我几乎完成了它,我有SQLite数据库列表视图中列出的所有值。但是,当我点击任何复选框时,该项目未被选中,而是另一项活动开始。我甚至评论了开始另一项活动的代码。但是,现在应用程序意外停止了。我得到的logcat如下 -
09-10 12:56:12.707: E/AndroidRuntime(15502): FATAL EXCEPTION: main
09-10 12:56:12.707: E/AndroidRuntime(15502): java.lang.NullPointerException
09-10 12:56:12.707: E/AndroidRuntime(15502): at com.example.fromstart.addpersons2photo.onListItemClick(addpersons2photo.java:73)
代码如下 -
public class addpersons2photo extends ListActivity { TextView content;
final adapter info = new adapter(this);
Button add;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.personstoadd);
int rowcount = info.getrowcount();
content = (TextView)findViewById(R.id.output);
String[] values = new String[11];
for (int i=0;i<=10;i++)
{
values[i] = info.plist(i+1); //here I am getting all the values from the database and storing in an array.
Toast.makeText(getApplicationContext(), values[i], Toast.LENGTH_LONG).show();
}
// Define a new Adapter
// First parameter - Context
// Second parameter - Layout for the row
// Third - the Array of data
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, values);
ListView listView = (ListView) findViewById(android.R.id.list);
listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// Assign adapter to List
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id); //this is line no. 73 where I am getting exception
// ListView Clicked item index
int itemPosition = position;
// ListView Clicked item value
String itemValue = (String) l.getItemAtPosition(position);
content.setText("Click : \n Position :"+itemPosition+" \n ListItem : " +itemValue);
act(itemValue);
}
private void act(String itemValue) {
// TODO Auto-generated method stub
String value = itemValue;
Toast.makeText(getApplicationContext(), value, Toast.LENGTH_LONG).show();
}
}
我的目标是,当我检查列表中的项目时,应该选中复选框,不应该启动任何活动,并且应该能够一次选择多个项目并在Toast中一次显示所有项目消息。
我知道,我应该有一些像按钮这样的项目,这样当我点击它时,点击它后会出现Toast消息。对不起,我会在这个问题解决后再这样做。
我已经尝试了以下教程,以了解这一点。
Android ListView With CheckBoxes
Change CheckBox state on List item click?
How to save state of CheckBox while scrolling in ListView?
在EmployeeAdapter.java类中,将在以下教程中进行描述
http://androidfreakers.blogspot.in/2011/10/custom-listview-with-checkbox.html
我使用setOnCheckedChangeListener()找到了一些代码。我认为这可能适用于我的代码。但我无法理解,如何在我的代码中使用它。如果您有任何理解,请告诉我应该如何更改我的代码。
包括这些,我已经尝试了很多其他教程,但我没有得到适当的解决方案来解决我的问题。请帮助我提出您的建议,如果可能的话,请提供一些示例代码或教程。
提前致谢。