Listview AdapterView.OnItemClickListener中出错
为什么我在这里说mis这个数组列表代码 我试了很多,但没有找到解决办法 请帮忙Listview AdapterView.OnItemClickListener中出错,listview,android-studio,arraylist,Listview,Android Studio,Arraylist,为什么我在这里说mis这个数组列表代码 我试了很多,但没有找到解决办法 请帮忙 *public class* MainActivity extends AppCompatActivity { **@Override** protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
*public class* MainActivity extends AppCompatActivity {
**@Override**
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<Listitem> Items = new ArrayList<Listitem>();
Items.add(new Listitem("Noor", "Derna"));
Items.add(new Listitem("MERO", "Derna"));
Items.add(new Listitem("Noor", "Derna"));
Items.add(new Listitem("Noor", "Derna"));
**mycustomadapter myadabter = new mycustomadapter(Items);**
**ListView Ls = (ListView) findViewById(R.id.listView);
Ls.setAdapter(myadabter);
Ls.setOnClickListener(new AdapterView.OnItemClickListener() {**
**@Override**
*public void onItemClick (AdapterView<?> parent, View view, int position, long id) {*
TextView txtname = (TextView) view.findViewById(R.id.txt_name);
TextView txtdisc = (TextView) view.findViewById(R.id.txt_disc);
Toast.makeText(getApplicationContext(), txtname.getText(), Toast.LENGTH_LONG).show();
}
});
}
class mycustomadapter extends BaseAdapter
{
ArrayList<Listitem> Items=new ArrayList<Listitem>(); array list
mycustomadapter(ArrayList<Listitem> Items){
this.Items=Items;
}
@Override
public int getCount() {
return Items.size();
}
@Override
public Object getItem(int position) {
return Items.get(position).Name;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int i, View View, ViewGroup viewGroup) {
LayoutInflater Linflater=getLayoutInflater();
View view1 = Linflater.inflate(R.layout.raw_view,null); الview1يمثل الraw_item
TextView txtname=(TextView)view1.findViewById(R.id.txt_name);
TextView txtdisc=(TextView)view1.findViewById(R.id.txt_disc);
txtname.setText(Items.get(i).Name);
txtdisc.setText(Items.get(i).Desc);
array list
return view1;
}
}
*公共类*MainActivity扩展了AppCompatActivity{
**@凌驾**
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList Items=新建ArrayList();
添加(新列表项(“Noor”、“Derna”);
添加(新列表项(“MERO”、“Derna”);
添加(新列表项(“Noor”、“Derna”);
添加(新列表项(“Noor”、“Derna”);
**mycustomadapter myadabter=新的mycustomadapter(项目)**
**ListView Ls=(ListView)findViewById(R.id.ListView);
Ls.setAdapter(myadabter);
Ls.setOnClickListener(新的AdapterView.OnItemClickListener(){**
**@凌驾**
*public void onItemClick(AdapterView父对象、视图、整型位置、长id){*
TextView txtname=(TextView)view.findViewById(R.id.txt_name);
TextView txtdisc=(TextView)view.findviewbyd(R.id.txt_disc);
Toast.makeText(getApplicationContext(),txtname.getText(),Toast.LENGTH_LONG.show();
}
});
}
类mycustomadapter扩展了BaseAdapter
{
ArrayList Items=新建ArrayList();数组列表
mycustomadapter(ArrayList项){
这个。项目=项目;
}
@凌驾
public int getCount(){
返回Items.size();
}
@凌驾
公共对象getItem(int位置){
返回项目。获取(位置)。名称;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
LayoutInflater Linflater=getLayoutInflater();
视图视图1=Linflater.充气(R.布局.原始视图,空);视图1.原始项目
TextView txtname=(TextView)view1.findViewById(R.id.txt_name);
TextView txtdisc=(TextView)view1.findViewById(R.id.txt_disc);
setText(Items.get(i).Name);
txtdisc.setText(Items.get(i).Desc);
数组列表
返回视图1;
}
}
}`ListView Ls=(ListView)findViewById(R.id.ListView)//اتصال بالليست فيو
Ls.setAdapter(myadabter);
Ls.setOnClickListener(新的AdapterView.OnItemClickListener(){
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView txtname=(TextView)view.findViewById(R.id.txt_name);
TextView txtdisc=(TextView)view.findviewbyd(R.id.txt_disc);
Toast.makeText(getApplicationContext(),txtname.getText(),Toast.LENGTH_LONG.show();
}
});
}`
您为什么要在Listview中使用clickListner???。无论您在做什么
Ls.setOnClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
TextView txtname = (TextView) view.findViewById(R.id.txt_name);
TextView txtdisc = (TextView) view.findViewById(R.id.txt_disc);
Toast.makeText(getApplicationContext(), txtname.getText(), Toast.LENGTH_LONG).show();
}
});
}`
Ls.setOnClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView txtname=(TextView)view.findViewById(R.id.txt_name);
TextView txtdisc=(TextView)view.findviewbyd(R.id.txt_disc);
Toast.makeText(getApplicationContext(),txtname.getText(),Toast.LENGTH_LONG.show();
}
});
}`
这是完全错误的。如果要单击listview项目并从单击的项目中获取文本,请执行以下操作:
Ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(MainActivity.this, Items.get(position).getName() + " " + Items.get(position).getDesc(), Toast.LENGTH_SHORT).show();
}
});
Ls.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
Toast.makeText(MainActivity.this,Items.get(position).getName()+“”+Items.get(position).getDesc(),Toast.LENGTH_SHORT).show();
}
});
为了澄清您的困惑,这里有完整的代码
public class MainActivity extends AppCompatActivity {
ListView Ls;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Ls = (ListView) findViewById(R.id.listView);
final ArrayList<Listitem> Items = new ArrayList<Listitem>();
Items.add(new Listitem("Noor", "Derna"));
Items.add(new Listitem("MERO", "Derna"));
Items.add(new Listitem("Noor", "Derna"));
Items.add(new Listitem("Noor", "Derna"));
final mycustomadapter myadabter = new mycustomadapter(Items);
Ls.setAdapter(myadabter);
Ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(MainActivity.this, Items.get(position).getName() + " " + Items.get(position).getDesc(), Toast.LENGTH_SHORT).show();
}
});
}
class mycustomadapter extends BaseAdapter {
ArrayList<Listitem> Items = new ArrayList<Listitem>();
public TextView txtname, txtdisc;
LayoutInflater Linflater;
mycustomadapter(ArrayList<Listitem> Items) {
this.Items = Items;
}
@Override
public int getCount() {
return Items.size();
}
@Override
public Object getItem(int position) {
return Items.get(position).name;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int i, View View, ViewGroup viewGroup) {
Linflater = getLayoutInflater();
View view1 = Linflater.inflate(R.layout.raw_view, null);
txtname = (TextView) view1.findViewById(R.id.txt_name);
txtdisc = (TextView) view1.findViewById(R.id.txt_disc);
txtname.setText(Items.get(i).name);
txtdisc.setText(Items.get(i).desc);
return view1;
}
}
}
public类MainActivity扩展了AppCompatActivity{
ListView Ls;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Ls=(ListView)findViewById(R.id.ListView);
最终ArrayList项=新ArrayList();
添加(新列表项(“Noor”、“Derna”);
添加(新列表项(“MERO”、“Derna”);
添加(新列表项(“Noor”、“Derna”);
添加(新列表项(“Noor”、“Derna”);
最终mycustomadapter myadabter=新的mycustomadapter(项目);
Ls.setAdapter(myadabter);
Ls.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
Toast.makeText(MainActivity.this,Items.get(position).getName()+“”+Items.get(position).getDesc(),Toast.LENGTH_SHORT).show();
}
});
}
类mycustomadapter扩展了BaseAdapter{
ArrayList Items=新建ArrayList();
公共文本视图txtname,txtdisc;
拉平机;
mycustomadapter(ArrayList项){
这个。项目=项目;
}
@凌驾
public int getCount(){
返回Items.size();
}
@凌驾
公共对象getItem(int位置){
返回项目。获取(位置)。名称;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
Linflater=getLayoutInflater();
视图view1=Linflater.充气(R.layout.raw_视图,空);
txtname=(TextView)view1.findViewById(R.id.txt\u name);
txtdisc=(TextView)view1.findviewbyd(R.id.txt\u disc);
setText(Items.get(i).name);
txtdisc.setText(Items.get(i).desc);
返回视图1;
}
}
}
用于使数组列表成为最终列表,因为您已经在onCreate()中声明了它,并且在使用它时
public class MainActivity extends AppCompatActivity {
ListView Ls;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Ls = (ListView) findViewById(R.id.listView);
final ArrayList<Listitem> Items = new ArrayList<Listitem>();
Items.add(new Listitem("Noor", "Derna"));
Items.add(new Listitem("MERO", "Derna"));
Items.add(new Listitem("Noor", "Derna"));
Items.add(new Listitem("Noor", "Derna"));
final mycustomadapter myadabter = new mycustomadapter(Items);
Ls.setAdapter(myadabter);
Ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(MainActivity.this, Items.get(position).getName() + " " + Items.get(position).getDesc(), Toast.LENGTH_SHORT).show();
}
});
}
class mycustomadapter extends BaseAdapter {
ArrayList<Listitem> Items = new ArrayList<Listitem>();
public TextView txtname, txtdisc;
LayoutInflater Linflater;
mycustomadapter(ArrayList<Listitem> Items) {
this.Items = Items;
}
@Override
public int getCount() {
return Items.size();
}
@Override
public Object getItem(int position) {
return Items.get(position).name;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int i, View View, ViewGroup viewGroup) {
Linflater = getLayoutInflater();
View view1 = Linflater.inflate(R.layout.raw_view, null);
txtname = (TextView) view1.findViewById(R.id.txt_name);
txtdisc = (TextView) view1.findViewById(R.id.txt_disc);
txtname.setText(Items.get(i).name);
txtdisc.setText(Items.get(i).desc);
return view1;
}
}
}