1 回答
TA贡献1890条经验 获得超9个赞
这是通过 CustomAdapter 在 ListView 中的数组列表中显示国家名称和人口的完整工作代码。请按照列出的步骤操作。已在您的 MainActivity 中列出查看 lvCountries。
1.Country.java
public class Country {
String name;int population; String capital,language,currentcy;
int image;
public Country(String name, int population, String capital, String language, String currentcy, int image) {
this.name = name;
this.population = population;
this.capital = capital;
this.language = language;
this.currentcy = currentcy;
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPopulation() {
return population;
}
public void setPopulation(int population) {
this.population = population;
}
public String getCapital() {
return capital;
}
public void setCapital(String capital) {
this.capital = capital;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getCurrentcy() {
return currentcy;
}
public void setCurrentcy(String currentcy) {
this.currentcy = currentcy;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
在布局中的res中添加entity_country.xml
<TextView
android:id="@+id/lit_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="#000"
/>
<TextView
android:id="@+id/lit_item_population"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="#89a"/>
<TextView
android:id="@+id/lit_item_capital"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="#f00"/>
<TextView
android:id="@+id/lit_item_language"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="#7788ff"/>
<TextView
android:id="@+id/lit_item_currency"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="#007700"/>
CustomAdapter.java
============开始======
class CustomAdapter extends BaseAdapter {
private ArrayList<Country> _data;
Context _c;
CustomAdapter(ArrayList<Country> data, Context c) {
_data = data;
_c = c;
Log.d("inside customAdapter", "inside customAdapter constructor...");
}
public int getCount() {
// TODO Auto-generated method stub
return _data.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return _data.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) _c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.entity_country, null);
}
TextView lit_item_name = (TextView) v.findViewById(R.id.lit_item_name);
TextView lit_item_population = (TextView) v.findViewById(R.id.lit_item_population);
TextView lit_item_capital = (TextView) v.findViewById(R.id.lit_item_capital);
TextView lit_item_language = (TextView) v.findViewById(R.id.lit_item_language);
TextView lit_item_currency = (TextView) v.findViewById(R.id.lit_item_currency);
ImageView list_item_image = (ImageView) v.findViewById(R.id.list_item_image);
Log.d("tvcredit==>", " "+lit_item_name.getText().toString());
final Country tpj = _data.get(position);
lit_item_name.setText(tpj.name+"");
lit_item_population.setText(tpj.population+"");
lit_item_capital.setText(tpj.capital+"");
lit_item_language.setText(tpj.language+"");
lit_item_currency.setText(tpj.currentcy+"");
list_item_image.setImageResource(tpj.image);
LinearLayout ll_parent=(LinearLayout)v.findViewById(R.id.ll_parent);
ll_parent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(_c,tpj.name+"\n"+tpj.capital,Toast.LENGTH_LONG).show();
//======== code as per your requirement =========
//Intent intent=new Intent(_c,TargetActivity.class);
//intent.putExtra("name",tpj.name+"");
//intent.putExtra("name",tpj.capital+"");
//_c.startActivity(intent);
}
});
return v;
}}
===========结束=========
在 MainActivity.java 里面的 onCreate 方法中只需编写
ListView lvCountries = (ListView)findViewById(R.id.lvCountries);
ArrayList<Country> countries;
countries = new ArrayList<>();
countries.add(new Country("Australia", 100, "Canberra", "English", "Dollars", R.drawable.australia));
countries.add(new Country("China", 5771876, "Beijing", "Chinese", "Renminbi", R.drawable.china));
countries.add(new Country("Germany", 126860301, "Berlin", "German", "Euros", R.drawable.germany));
countries.add(new Country("India", 60550075, "New Delhi", "Indian", "Rupees", R.drawable.india));
countries.add(new Country("UK", 100, "London", "English", "GBP", R.drawable.uk));
CustomAdapter customAdapter=new CustomAdapter(countries,getApplicationContext());
lvCountries.setAdapter(customAdapter);
我已经查过了,肯定对你有帮助。
添加回答
举报