Android 如何将所选Listview项的值设置为字符串?

Android 如何将所选Listview项的值设置为字符串?,android,sqlite,listview,simplecursoradapter,Android,Sqlite,Listview,Simplecursoradapter,我有一个自定义的ListView,其中的数据来自SQLite数据库。 我使用了游标和简单游标适配器来填充列表视图 设置MClickListener后,无法将所选项目的值设置为字符串。我尝试了lv.getSelectedItemPosition(position),但它不起作用。 有人能帮忙吗 Adapater类代码 public class AllBankBranch_adapter extends BaseAdapter { Activity macactivity; ArrayList&l

我有一个自定义的ListView,其中的数据来自SQLite数据库。 我使用了游标和简单游标适配器来填充列表视图

设置MClickListener后,无法将所选项目的值设置为字符串。我尝试了lv.getSelectedItemPosition(position),但它不起作用。 有人能帮忙吗

Adapater类代码

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;
}
公共类AllBankBranch\u适配器扩展BaseAdapter{
活动性;
ArrayList列表2;
public AllBankBranch_适配器(活动活动、阵列列表){
超级();
this.macactivity=活动;
list2=列表;
}
@凌驾
public int getCount(){
返回list2.size();
}
@凌驾
公共对象getItem(int位置){
返回列表2.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
私有类视窗持有者{
TextView银行分行;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终持票人;
LayoutInflater充气机=macactivity.getLayoutInflater();
convertView=充气机。充气(R.layout.engineeringcollbankbranch_列表视图,空);
holder=新的ViewHolder();
holder.bankbranchcity=(TextView)convertView.findViewById(R.id.tv\u enggcoll\u bankbranch\u city);
holder.bankbranchcity.setText(list2.get(position.getBankCity());
返回视图;
}
}

正在从数据库检索数据:

 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;
}
公共列表getallbank(字符串城市){
List banklist=new ArrayList();
String query=“选择BankBranch,BankAddress from where BankCity=“+city”;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(查询,空);
if(cursor.moveToFirst()){
做{
all_bankbranch bbracnh=新的all_bankbranch();
bbracnh.setBankBranch(cursor.getString(2));
bbracnh.setBankAddress(cursor.getString(3));
银行名单。添加(bbracnh);
}
while(cursor.moveToNext());
}
返回银行名单;
}
主活动代码

 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);

    }
    });
ListView所有银行分行;
b;
德意志银行分行;
简单型或适应性结痂;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u Eng\u college\u bank\u branch);
DABB=新的DB_AllBankBranch(本);
banksearchbar=(EditText)findViewById(R.id.et\u enggcoll\u bankbranch\u searchbar);
路缘B=DABB。选择_bankcity();
allbankbranch=(ListView)findViewById(R.id.lv\u enggcoll\u bankbranch);
String[]columns=新字符串[]{“BankCity”};
int[]to=new int[]{R.id.tv_enggcoll_bankbranch_city};
scabb=新的SimpleCorsorAdapter(此,R.layout.engineeringcollbankbranch_列表视图,路缘,柱,至);
如果(curbb.getCount()>0){
allbankbranch.setAdapter(scabb);
}
allbankbranch.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串s=allbankbranch.getItemAtPosition(位置);
}
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
}
});

使用onitem click listener,所选项目的listener不适用于listview。它仅适用于微调器。

根据您的要求

String selectedFromList = lv.getItemAtPosition(position);
给你

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

如果您希望在单击您的listview位置后指定特定视图数据

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

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

尝试…希望它能工作

listView.setOnItemClickListener(新的AdapterView.OnItemClickListener()
        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);
        }
    });
{ @凌驾 公共单击(适配器视图适配器,视图v,内部位置,长arg3) { 字符串s=listView.getItemAtPosition(position).toString(); //或: 字符串ss=(字符串)适配器.getItemAtPosition(位置); } });
什么不起作用?错误是什么?你得到了什么输出?你能发布这个输出吗?你能提供一些代码吗?
getSelectedItemPosition
不接受任何参数,如果它被传递给
OnItemClickListener#onItemClick
方法,你为什么要得到这个位置?你在选择(又称高亮显示)吗,或仅点击/单击?发布代码它将提供银行XYZ分行所在的所有城市的列表,当用户单击该城市时,它将引导到下一个活动,其中将显示所选城市的所有分行。这对OP有何帮助,它与OP设置的侦听器完全相同。尝试添加
view.findViewById
在这里,我使用了OnItemClickListener,请参考代码。我已经说过,它不起作用。显示错误SQLiteCursor无法转换为java.lang.StringMate,谢谢,它起作用了
        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);
        }
    });
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 
        }
    });