【发布时间】:2017-10-09 04:06:17
【问题描述】:
我有一个自定义的 ListView,其中的数据来自 SQLite 数据库。 我已经使用光标和简单光标适配器来填充列表视图。
设置 OnItemClickListener 后,我无法将所选项目的值转换为字符串。我试过 lv.getSelectedItemPosition(position) 但它不起作用。 有人可以帮忙吗?
适配器类代码
public class AllBankBranch_adapter extends BaseAdapter {
Activity macactivity;
ArrayList<all_bankbranch> list2;
public AllBankBranch_adapter(Activity activity, ArrayList<all_bankbranch> list){
super();
this.macactivity = activity;
list2 = list;
}
@Override
public int getCount() {
return list2.size();
}
@Override
public Object getItem(int position) {
return list2.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
private class ViewHolder{
TextView bankbranchcity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = macactivity.getLayoutInflater();
convertView = inflater.inflate(R.layout.engineeringcollbankbranch_listview,null);
holder = new ViewHolder();
holder.bankbranchcity = (TextView) convertView.findViewById(R.id.tv_enggcoll_bankbranch_city);
holder.bankbranchcity.setText(list2.get(position).getBankCity());
return convertView;
}
}
从数据库中检索数据:
public List<all_bankbranch> getallbank(String city){
List<all_bankbranch> banklist = new ArrayList<all_bankbranch>();
String query = "Select BankBranch, BankAddress from all_bankbranch where BankCity = " + city;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query,null);
if(cursor.moveToFirst()){
do{
all_bankbranch bbracnh = new all_bankbranch();
bbracnh.setBankBranch(cursor.getString(2));
bbracnh.setBankAddress(cursor.getString(3));
banklist.add(bbracnh);
}
while (cursor.moveToNext());
}
return banklist;
}
主活动代码
ListView allbankbranch;
Cursor curbb;
DB_AllBankBranch DABB;
SimpleCursorAdapter scabb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_engg_college_bank_branch);
DABB = new DB_AllBankBranch(this);
banksearchbar = (EditText) findViewById(R.id.et_enggcoll_bankbranch_searchbar);
curbb = DABB.select_bankcity();
allbankbranch = (ListView) findViewById(R.id.lv_enggcoll_bankbranch);
String[] columns = new String[]{"BankCity"};
int[] to = new int[]{R.id.tv_enggcoll_bankbranch_city};
scabb = new SimpleCursorAdapter(this, R.layout.engineeringcollbankbranch_listview, curbb, columns, to);
if (curbb.getCount() > 0) {
allbankbranch.setAdapter(scabb);
}
allbankbranch.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String s = allbankbranch.getItemAtPosition(position);
}
});
【问题讨论】:
-
什么不起作用?错误是什么?你得到了什么输出?你能发布这个输出吗?你能提供一些代码吗?
-
getSelectedItemPosition不带参数,如果传给OnItemClickListener#onItemClick方法为什么要获取位置? -
您是在选择(也就是突出显示),还是只点击/点击?
-
贴出代码
-
它将提供银行XYZ分行所在的所有城市的列表,当用户单击城市时,它将引导到下一个活动,其中将显示所选城市的所有分行。.
标签: android sqlite listview simplecursoradapter