Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击ListView项时将_id从一个活动传递到另一个活动_Java_Android_Android Intent - Fatal编程技术网

Java 单击ListView项时将_id从一个活动传递到另一个活动

Java 单击ListView项时将_id从一个活动传递到另一个活动,java,android,android-intent,Java,Android,Android Intent,我有个问题。在我的活动中,我有一个ListView,它的值是从数据库编译而来的。数据库返回三列:\ Id、AccountName和Comments。我想要的是,当用户单击listView中的一个项目时,将提取该项目的位置,然后将该位置与包含数据的ArrayList中的位置进行比较,然后在找到特定字段和行时,_Id字段将被取出,并以字符串的形式传递给另一个活动。 你可能不太明白;这可能有助于: public void search(View view){ final ListView vL

我有个问题。在我的活动中,我有一个ListView,它的值是从数据库编译而来的。数据库返回三列:\ Id、AccountName和Comments。我想要的是,当用户单击listView中的一个项目时,将提取该项目的位置,然后将该位置与包含数据的ArrayList中的位置进行比较,然后在找到特定字段和行时,_Id字段将被取出,并以字符串的形式传递给另一个活动。 你可能不太明白;这可能有助于:

public void search(View view){
    final ListView vLst_IDCommName=(ListView)findViewById(R.id.lst_IDCommName);
    EditText vTxt_searchTxt=(EditText)findViewById(R.id.search_txt);
    String srch_str= vTxt_searchTxt.getText().toString();

    if(srch_str.length()>0){
        //The DataSource for the LstView
        List<Comment> values = datasource.getContacts(srch_str);

        ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this, android.R.layout.simple_list_item_1, values);
        vLst_IDCommName.setAdapter(adapter);
    }
    else{
        Toast.makeText(getBaseContext(), "Please type in a value to proceed!", Toast.LENGTH_LONG).show();
    }

    vLst_IDCommName.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            //Here I want to create a function that will take the position of the item clicked
            //and then searched for that position in the ArrayList and then return the _Id of 
            //the account whose value was clicked.

    }});  
}
公共作废搜索(查看){
最终ListView vLst_IDCommName=(ListView)findViewById(R.id.lst_IDCommName);
EditText vText_searchTxt=(EditText)findViewById(R.id.search_txt);
字符串srch_str=vTxt_searchTxt.getText().toString();
如果(srch_str.length()>0){
//LstView的数据源
列表值=datasource.getContacts(srch_str);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1的值);
vLst_IDCommName.setAdapter(适配器);
}
否则{
Toast.makeText(getBaseContext(),“请键入要继续的值!”,Toast.LENGTH\u LONG.show();
}
vLst_IDCommName.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//在这里,我想创建一个函数,它将占据所单击项目的位置
//然后在ArrayList中搜索该位置,然后返回
//已单击其值的帐户。
}});  
}
我用来获取数据的代码如下:

public List<Comment> getContacts(String search_str) { 
    List<Comment> comments = new ArrayList<Comment>(); 
    String srch_str=(String) search_str; 
    Cursor cur_comments= database.rawQuery("Select * from comments where acc_name like('%"+srch_str+"%')"+" "+ "or comment like('%"+srch_str+"%')", null); 
    cur_comments.moveToFirst(); 
    while (!cur_comments.isAfterLast()) { 
        Comment comment = cursorToComment(cur_comments); 
        comments.add(comment); cur_comments.moveToNext(); 
        } 
    cur_comments.close(); 
    return comments; 
} 
public List getContacts(字符串搜索){
列表注释=新建ArrayList();
字符串srch_str=(字符串)search_str;
Cursor cur_comments=database.rawQuery(“从注释中选择*,其中acc_名称类似(“%”+srch_str+“%”)、“+”“+”或注释类似(“%”+srch_str+“%”),null);
cur_comments.moveToFirst();
而(!cur_comments.isAfterLast()){
注释注释=光标注释(当前注释);
comments.add(comment);cur_comments.moveToNext();
} 
cur_comments.close();
返回评论;
} 
任何反馈都将不胜感激。

您可以尝试

 public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    String currentId=yourArrayList.get(position).toString();
         }
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
String currentId=yourArrayList.get(position.toString();
}
vLst_IDCommName.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
对象s=父对象。getItemAtPosition(位置);
字符串j=s.toString();
}});  

我想您需要列表项名称否!我需要列表项的位置,然后在ArrayList中搜索该特定位置。可能吗?您是否在ArrayList中存储了唯一的位置?我们需要了解有关您的数据源的更多信息。这是我用来获取数据的代码:
code:public List getContacts(String search_str){List comments=new ArrayList();String srch_str=(String)search_str;Cursor cur_comments=database.rawQuery(“从注释中选择*,其中acc_name like(“%”“+srch_str+”%”“+”+“+””或注释like(“%”“+srch_str+“%”)”,null);cur_comments.moveToFirst();while(!cur_comments.isAfterLast()){comment comment comment comment=cursortocomments(cur_comments);comments.add(comment);cur;cur comments.moveToNext()}cur comments.close();return;}”
@Tarsem@FD_这是我的ArrayList:
code:ArrayList values=(ArrayList)datasource.getContacts(srch_str);
在ListView的OnItemClick方法中,我编写了您的代码:
code:String currentId=values.get(position).toString();
但它在values=“values”下显示了错误,无法解决“此问题的任何解决方案?ArrayList值;宣布它是全球性的!如何将其声明为全局变量?全局变量:公共类MainActivity扩展活动{private CommentsDataSource datasource;公共ArrayList值;
vLst_IDCommName.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
      Object s=parent.getItemAtPosition(position);
      String j=s.toString();
}});