【发布时间】:2016-10-17 09:39:18
【问题描述】:
我想让 OnItemClickListener 成为动态列表视图。列表视图不应该有固定的大小。相反,它是数据库中行的大小。但是我如何创建监听器,因为我不知道列表视图的大小,所以我不能使用当前的方法。
问题出在内部类中 if(position==0) { ... }
public class VisaUtgiftFragment extends Fragment {
private MainActivity ui;
private TextView tvDatabase;
private MyDBHandler dbHandler;
private ListView lvUtgift;
public VisaUtgiftFragment() {
// Required empty public constructor
}
public void setActivity(MainActivity ui){
this.ui = ui;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_visa_utgift, container, false);
tvDatabase = (TextView)view.findViewById(R.id.tvDatabaseTest);
dbHandler = new MyDBHandler(getActivity(), null, null, 1);
tvDatabase.setText(dbHandler.databaseToString());
lvUtgift = (ListView)view.findViewById(R.id.lvUtgift);
// lvUtgift.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, [the rows in the database]));
lvUtgift.setAdapter(new SimpleCursorAdapter(getActivity(),
android.R.layout.simple_list_item_1,
dbHandler.getAllItemsInCursor(),
new String[]{"_titel"},
new int[]{android.R.id.text1},
0));
lvUtgift.setOnItemClickListener(new ListViewClicked());
return view;
}
private class ListViewClicked implements android.widget.AdapterView.OnItemClickListener {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position==0) { //Should be the clicked listview and execute the code
Cursor cursor = (Cursor) lvUtgift.getItemAtPosition(position);
String string = cursor.getString(cursor.getColumnIndexOrThrow("_titel"));
Toast.makeText(getActivity().getApplicationContext(), string, Toast.LENGTH_SHORT).show();
ui.dVisaInkomst();
}
}
}
}
【问题讨论】:
-
什么问题?
-
问题如下:我正在尝试创建一个不使用函数 if(position == 0){} else if(position == 1){} 的处理程序,因为我赢了'不能做这么多语句,因为列表视图是动态的,并且会一直变大。
-
如果我理解,您需要根据点击的位置执行不同的操作吗?
标签: android listview android-fragments onitemclicklistener