Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Android 如何使用setonitemclicklistener从自定义列表中获取元素_Android_Listview - Fatal编程技术网

Android 如何使用setonitemclicklistener从自定义列表中获取元素

Android 如何使用setonitemclicklistener从自定义列表中获取元素,android,listview,Android,Listview,我做了一个简单的任务,从数据库中获取数据,然后在listview上放大数据。但当我单击listrow时,它没有被选中,当我单击我从数据库中放入列表中的文本时,它执行选择(setonitemclicklistenr工作)…我还想将特定的listrow_文本传递给其他活动以编辑该文本…我尝试了一种在getview()中对视图执行clicklistener的方法,但它不接受startActivity(intent)命令 如果我在activity类中使用setonitemclicklistener,我如

我做了一个简单的任务,从数据库中获取数据,然后在listview上放大数据。但当我单击listrow时,它没有被选中,当我单击我从数据库中放入列表中的文本时,它执行选择(setonitemclicklistenr工作)…我还想将特定的listrow_文本传递给其他活动以编辑该文本…我尝试了一种在getview()中对视图执行clicklistener的方法,但它不接受startActivity(intent)命令

如果我在activity类中使用setonitemclicklistener,我如何获取该文本。。。 我是一个初学者,在理解代码时遇到了一些问题,我一直在寻找我的问题

列出使用自定义适配器的类

package com.example.smarttext2;

     import android.app.Activity;
     import android.content.Intent;
     import android.database.Cursor;
     import android.os.Bundle;
     import android.view.View;
     import android.widget.AdapterView;
     import android.widget.AdapterView.OnItemClickListener;
     import android.widget.ListView;
     import android.widget.Toast;



   public class dialoglist extends Activity {
        ListView list;
        Cursor cursor;
int count;
String[] str;
dialogadapter adapter;
database demo2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialoglist);

    demo2 = new database(getApplicationContext());

    list = (ListView)findViewById(R.id.listView1);



    cursor = demo2.fetch();
    count = cursor.getCount();
    str = new String[count];

    cursor.moveToFirst();
    for(int i=0;i<count;i++)
    {
        str[i]=cursor.getString(0);
        cursor.moveToNext();
    }
    adapter = new dialogadapter(this, str);
    list.setAdapter(adapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapview, View view, int position,
                long pos_id) {
            // TODO Auto-generated method stub
            String pos = view.toString();//this line gives some value like          android.widget.linearlayout473y5834434....
            //Toast.makeText(getApplicationContext(), pos, Toast.LENGTH_LONG).show();
            Intent intent = new Intent(dialoglist.this,third.class);
            intent.putExtra("key",pos);
            startActivity(intent);
        }
    });



}
}

我想在其中发送数据的活动

 package com.example.smarttext2;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;

    public class third extends Activity {
        EditText et1;
        Button btn1;
        database demo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.third);
    Intent intent = getIntent();
    String str1 = intent.getStringExtra("key");

    et1 =(EditText)findViewById(R.id.editText1);
    btn1 = (Button)findViewById(R.id.button1);

    et1.setText(str1);

    demo = new database(getApplicationContext());

    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            demo.add(et1.getText().toString());
            finish();
        }
    });

}
}

list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0,视图v,内部arg2,
最终长arg3){
//TODO自动生成的方法存根
TextView text=(TextView)v.findViewById(R.id.textView1);
String String=text.getText().toString();
Toast.makeText(getApplicationContext(),string,3000).show();
意向意向=新意向(dialoglist.this,third.class);
intent.putExtra(“键”,字符串);
星触觉(意向);
}
});

arg2是您的位置,arg1是您在列表中的视图。这意味着
String pos=arg1.toString()并替换
intent.putExtra(“键”,位置)带有
intent.putExtra(“键”,arg2)。我还建议将参数从默认值重命名为更具描述性的值。@zgc7009 intent.putExtra(“key”,arg2);将传递项目在列表中的位置。我想传递该特定位置的项目。。。。使用字符串pos=arg0.getItematPosition(arg2.tostring();正在显示错误…明白了,被误解了。要获取字符串,请修改adapters getItem()方法以返回字符串,并在onItemClick中获取字符串do adapter.getItem(arg2);它仍然不起作用…@zgc7009它再次给出了项的索引,即0、1或2。。。。如何修改适配器的getItem()以返回字符串…感谢您的努力…返回str1[arg0];并将返回类型从long更改为String
 package com.example.smarttext2;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;

    public class third extends Activity {
        EditText et1;
        Button btn1;
        database demo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.third);
    Intent intent = getIntent();
    String str1 = intent.getStringExtra("key");

    et1 =(EditText)findViewById(R.id.editText1);
    btn1 = (Button)findViewById(R.id.button1);

    et1.setText(str1);

    demo = new database(getApplicationContext());

    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            demo.add(et1.getText().toString());
            finish();
        }
    });

}
  list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int arg2,
                final long arg3) {
            // TODO Auto-generated method stub
            TextView text = (TextView) v.findViewById(R.id.textView1);
            String string = text.getText().toString();
            Toast.makeText(getApplicationContext(), string, 3000).show();
            Intent intent = new Intent(dialoglist.this,third.class);
            intent.putExtra("key", string);
            startActivity(intent);


        }
    });