【问题标题】:How to get value of Selected Listview item to String?如何将 Selected Listview 项目的值转换为字符串?
【发布时间】: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


【解决方案1】:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 

{ 字符串名称 =((TextView)view.findViewById(R.id.price_name)).getText().toString();

Log.d("字符串",名称);

        }
    });

【讨论】:

  • 谢谢老兄,成功了
【解决方案2】:
String selectedFromList = lv.getItemAtPosition(position);

【讨论】:

    【解决方案3】:
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    
                }
            });
    

    使用 onitem click listener ,item selected listener 不适用于 listview。它仅适用于微调器。

    【讨论】:

    • 这对 OP 有什么帮助,它与 OP 设置的侦听器完全相同。
    • 尝试在其中添加view.findViewById
    • 我用过OnItemClickListener,请参考代码
    【解决方案4】:
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> adapter, View v, int position,long arg3)
            {
    
               String s = listView.getItemAtPosition(position).toString();
               //or:
               String ss = (String)adapter.getItemAtPosition(position);
            }
        });
    

    【讨论】:

    • 它不工作,我已经说过了。显示错误 SQLiteCursor cannot be cast to java.lang.String
    【解决方案5】:

    根据您的要求,

    你去吧..

    如果 U r row.xml 有多个视图,,,

    如果您希望在单击您的列表视图位置后为特定视图分配数据..

    字符串名称 =((TextView)view.findViewById(R.id.price_name)).getText().toString();

    U r 定义的名称具有该值, 你会变成这样,,

    试试……希望能成功

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 2016-02-20
      相关资源
      最近更新 更多