我在方法setViewValue和setOnItemClickListener中使用变量i时遇到了问题。 所以我需要检查表中行的值,然后将其添加到另一个类。 但是对于这种检查,我需要在两种方法中使用i或者以其他方式使用它。
你可以帮帮我吗?
String[] from = new String[] { DB.COLUMN_MON, DB.COLUMN_YEAR };
int[] to = new int[] { R.id.textMonth, R.id.textYear };
scAdapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, from, to);
scAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
for (int i=0; i < 98; i++){
if (cursor.getString(cursor.getColumnIndex(DB.COLUMN_MON)).equals(dataMonths[0]) && cursor.getString(cursor.getColumnIndex(DB.COLUMN_YEAR)).equals(dataYears[i])){
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main_month.this, month.class);
intent.putExtra("year", dataYears[i]);
intent.putExtra("month", dataMonths[0]);
startActivity(intent);
finish();
}
});
}
}
return false;
}
});
list.setAdapter(scAdapter);
谢谢你的帮助! 我这样解决了我的问题:
scAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, final Cursor cursor, int columnIndex) {
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main_month.this, month.class);
intent.putExtra("year", cursor.getString(cursor.getColumnIndex(DB.COLUMN_YEAR)));
intent.putExtra("month", cursor.getString(cursor.getColumnIndex(DB.COLUMN_MON)));
startActivity(intent);
finish();
}
});
return false;
}
});
答案 0 :(得分:0)
在onClick
方法和其他方法中使用变量的方法只有两种。
onClick
方法中声明变量,并将其作为参数传递给您需要的其他方法。如果您要使用第二种方法,则需要一个比i
更具描述性的变量名称。
答案 1 :(得分:0)
我想我明白你在做什么。您正在向ListView
添加项侦听器,除非您一遍又一遍地执行此操作。坏。 nhgrif基本上回答了手头的问题。我会回答告诉你不要循环。在当前上下文中,如果不声明全局变量,则无法保存i
。只设置setOnItemClickListener
一次!这是position
变量作为参数包含的原因;所以你知道点击了哪个视图。检查documentation。希望这有助于澄清它。
编辑:我应该澄清一下,不要循环并设置每个项目监听器。设置lister ONCE然后在必要时循环,在点击监听器中。