Android 如何使用setonitemclicklistener从自定义列表中获取元素
我做了一个简单的任务,从数据库中获取数据,然后在listview上放大数据。但当我单击listrow时,它没有被选中,当我单击我从数据库中放入列表中的文本时,它执行选择(setonitemclicklistenr工作)…我还想将特定的listrow_文本传递给其他活动以编辑该文本…我尝试了一种在getview()中对视图执行clicklistener的方法,但它不接受startActivity(intent)命令 如果我在activity类中使用setonitemclicklistener,我如何获取该文本。。。 我是一个初学者,在理解代码时遇到了一些问题,我一直在寻找我的问题 列出使用自定义适配器的类Android 如何使用setonitemclicklistener从自定义列表中获取元素,android,listview,Android,Listview,我做了一个简单的任务,从数据库中获取数据,然后在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);
}
});