Хорошо, так что на этом сайте много было сказано, однако я не верю, какая именно проблема в том, что использует мой код.Я заполняю listView с CheckedTextViews, который работает полностью.Однако, когда я нажимаю на элемент, он проверяется, но когда я прокручиваю вверх и вниз, случайные строки также проверяются.Я понимаю, что это должно быть связано с тем, как ListView отслеживает элементы.Я сталкиваюсь с некоторыми ошибками в данный момент.Я попытался заполнить хэш-карту списком строк, чтобы я мог отслеживать, какой из них установлен в true, а какие в false.Однако я не уверен, где реализовать карту и попытаться заполнить ее.
Вот мой OnCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewmenu);
//Get table name of menu clicked.
Bundle extras = getIntent().getExtras();
tableName = extras.getString("table");
// map each contact's name to a TextView in the ListView layout
String[] from = new String[] { "name" };
int[] to = new int[] { R.id.toppingCheckedTextView };
for(int i=0; i< from.length; i++){
map.put(i, false);
}
contactAdapter = new SimpleCursorAdapter(
ViewToppingListing.this, R.layout.toppings_list_item, null, from, to);
setListAdapter(contactAdapter); // set contactView's adapter
}
Я пытаюсь поместить карту в onCreate, чтобы заполнить ее, однако она жалуется на нулевой указатель.
Здесь я попробовал использовать метод OnListItemClick
@Override
protected void onListItemClick(ListView arg0, View arg1, int arg2, long arg3){
final int index = arg2 - arg0.getFirstVisiblePosition();
View v = arg0.getChildAt(index);
CheckedTextView ctv = (CheckedTextView) v.findViewById(R.id.toppingCheckedTextView);
if((Boolean)map.get(index) == true){
ctv.setChecked(true);
ctv.setVisibility(View.VISIBLE);
} else{
ctv.setVisibility(View.GONE);
}
}
Я много читал об этом, и кажется, что многие решения включают использование getView (), однако я не знаюесли это относится к моей ситуации.Любая помощь будет принята с благодарностью!