Android CustomAdapter和ListView
我的代码中一定有遗漏或错误,因此ListView不会显示任何内容 我遵循了这个例子 [我的模型]Android CustomAdapter和ListView,android,listview,adapter,listadapter,Android,Listview,Adapter,Listadapter,我的代码中一定有遗漏或错误,因此ListView不会显示任何内容 我遵循了这个例子 [我的模型] package com.example.apinato.layoutexample; public class MyModel { private String name; private String surname; private String ranking; public MyModel(String name, String address, Stri
package com.example.apinato.layoutexample;
public class MyModel {
private String name;
private String surname;
private String ranking;
public MyModel(String name, String address, String ranking) {
this.name = name;
this.surname = address;
this.ranking = ranking;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getSurname() {
return surname;
}
public void setRanking(String ranking) {
this.surname= ranking;
}
public String getRanking() {
return ranking;
}
}
[myCustomAdapter]
package com.example.apinato.layoutexample;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MyCustomAdapter extends ArrayAdapter {
private final Context context;
private final List list;
public MyCustomAdapter(Context context, int position, ArrayList<com.example.apinato.layoutexample.MyModel> list) {
super(context, position);
this.context = context;
this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// Get a new instance of the row layout view
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.row, parent, false);
TextView _name = (TextView) rowView.findViewById(R.id.titoloriga1);
TextView _surname = (TextView) rowView.findViewById(R.id.descrizioneriga1);
TextView _ranking = (TextView) rowView.findViewById(R.id.ranking1);
//added according to your suggestions
com.example.apinato.layoutexample.MyModel myModel = (com.example.apinato.layoutexample.MyModel) list.get(position);
_name.setText(myModel.getName());
_surname .setText(myModel.getName());
_ranking .setText(myModel.getName());
return rowView;
}
}
package com.example.apinato.layoutexample;
导入android.app.Activity;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
公共类MyCustomAdapter扩展了ArrayAdapter{
私人最终语境;
私人最终名单;
公共MyCustomAdapter(上下文、int位置、ArrayList列表){
超级(上下文、位置);
this.context=上下文;
this.list=列表;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图=转换视图;
//获取行布局视图的新实例
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
rowView=充气机。充气(R.layout.row,父级,false);
TextView _name=(TextView)rowView.findViewById(R.id.titoloriga1);
TextView _姓氏=(TextView)rowView.findViewById(R.id.descripioneriga1);
TextView _ranking=(TextView)rowView.findViewById(R.id.ranking1);
//根据您的建议添加
com.example.apinato.layoutexample.MyModel MyModel=(com.example.apinato.layoutexample.MyModel)list.get(位置);
_name.setText(myModel.getName());
_setText(myModel.getName());
_setText(myModel.getName());
返回行视图;
}
}
[我的活动]
package com.example.apinato.layoutexample;
import android.app.Activity;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listview = (ListView) findViewById(R.id.listview);
ArrayList<com.example.apinato.layoutexample.MyModel> list = new ArrayList<com.example.apinato.layoutexample.MyModel>();
list.add(new com.example.apinato.layoutexample.MyModel("aaaaa1","aaaaa1","2"));
list.add(new com.example.apinato.layoutexample.MyModel("bbbbb2","bbbbb2","3"));
list.add(new com.example.apinato.layoutexample.MyModel("ccccc3","ccccc3","1"));
list.add(new com.example.apinato.layoutexample.MyModel("ddddd4", "ddddd4", "5"));
list.add(new com.example.apinato.layoutexample.MyModel("ccccc5", "ccccc5", "4"));
final com.example.apinato.layoutexample.MyCustomAdapter adapter = new com.example.apinato.layoutexample.MyCustomAdapter(this, R.layout.row, list);
listview.setAdapter(adapter);
}
}
package com.example.apinato.layoutexample;
导入android.app.Activity;
导入android.content.Context;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Adapter;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终ListView ListView=(ListView)findViewById(R.id.ListView);
ArrayList=新建ArrayList();
添加(新的com.example.apinato.layoutexample.MyModel(“AAAA1”、“AAAA1”、“2”));
添加(新的com.example.apinato.layoutexample.MyModel(“bbbbb2”、“bbbbb2”、“3”));
添加(新的com.example.apinato.layoutexample.MyModel(“CCCC3”、“CCCC3”、“1”));
add(new com.example.apinato.layoutexample.MyModel(“ddd4”、“ddd4”、“5”));
添加(新的com.example.apinato.layoutexample.MyModel(“ccccc5”、“ccccc5”、“4”);
final com.example.apinato.layoutexample.MyCustomAdapter adapter=new com.example.apinato.layoutexample.MyCustomAdapter(此,R.layout.row,列表);
setAdapter(适配器);
}
}
[行的布局](未显示活动的布局)
试试这个:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// Get a new instance of the row layout view
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.row, parent, false);
TextView _name = (TextView) rowView.findViewById(R.id.titoloriga1);
TextView _surname = (TextView) rowView.findViewById(R.id.descrizioneriga1);
TextView _ranking = (TextView) rowView.findViewById(R.id.ranking1);
MyModel myModel = list.get(position);
_name.setText(myModel.getName());
_surname .setText(myModel..getSureName());
_ranking .setText(myModel.getRanking());
return rowView;
}
将这些行添加到
getView()
方法中,您缺少设置属性值的功能,正如Blackbelt所说
_name.setText(list.get(position).getName()));
_surname.setText(list.get(position).getSureName()));
_ranking.setText(list.get(position).getRanking());
更改您的自定义适配器
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// Get a new instance of the row layout view
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.row, parent, false);
TextView _name = (TextView) rowView.findViewById(R.id.titoloriga1);
TextView _surname = (TextView) rowView.findViewById(R.id.descrizioneriga1);
TextView _ranking = (TextView) rowView.findViewById(R.id.ranking1);
_name.setText(list.get(position).getName());
_surname.setText(list.get(position).getSurname());
_ranking.setText(list.get(position)getRanking());
return rowView;
}
GetView中缺少
\u name.setText()
。在自定义适配器中,您没有为\u name、\u姓氏和\u排名设置值,因此它不会显示任何内容,并且在添加这些内容后仍然不起作用?您缺少适配器中的实现getCount。默认情况下,此方法返回0,这意味着您的适配器有0项。是否也可以在列表中显示drawable?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// Get a new instance of the row layout view
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.row, parent, false);
TextView _name = (TextView) rowView.findViewById(R.id.titoloriga1);
TextView _surname = (TextView) rowView.findViewById(R.id.descrizioneriga1);
TextView _ranking = (TextView) rowView.findViewById(R.id.ranking1);
_name.setText(list.get(position).getName());
_surname.setText(list.get(position).getSurname());
_ranking.setText(list.get(position)getRanking());
return rowView;
}