AFAIK simple_list_item_2, iki TextView içeren bir TwoLineListItem içerir. ArrayAdapter burada çalışmayacak, ya özel bir adaptör oluşturmanız ya da SimpleCursorAdapter gibi destekleyen birini kullanmanız gerekecek. Eğer SimpleCursorAdapter istemiyorsanız
ListAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_list_item_2,
mCursor, // Pass in the cursor to bind to.
new String[] {People.NAME, People.COMPANY}, // Array of cursor columns to bind to.
new int[] {android.R.id.text1, android.R.id.text2}); // Parallel array of which template objects to bind to those columns.
// Bind to our new adapter.
setListAdapter(adapter);
Veya Özel ArrayAdapter oluşturmanız gerekir ya BaseAdapter
özel adaptöre diziyi (iki öğe olması) nesneyi, özel ArrayAdapter oluşturma uygulamak ve getListView.setAdapter için besleyin.
ArrayAdapter'ın getView yöntemini, özel diziler satır görünümünde ad dizgileri TextViews'a uygulamak için geçersiz kılın.
Aşağıdaki Snippet size yardımcı olacaktır.
SampleActivity.java
package org.sample;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.TwoLineListItem;
public class SampleActivity extends ListActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Person person;
ArrayList<Person> persons = new ArrayList<Person>();
person = new Person();
person.setName("Vipul");
person.setAge(20);
persons.add(person);
person = new Person();
person.setName("Anil");
person.setAge(22);
persons.add(person);
setListAdapter(new MyAdapter(this, persons));
}
}
Person.java
class Person {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MyAdapter.java
class MyAdapter extends BaseAdapter {
private Context context;
private ArrayList<Person> persons;
public MyAdapter(Context context, ArrayList<Person> persons) {
this.context = context;
this.persons = persons;
}
@Override
public int getCount() {
return persons.size();
}
@Override
public Object getItem(int position) {
return persons.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TwoLineListItem twoLineListItem;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
twoLineListItem = (TwoLineListItem) inflater.inflate(
android.R.layout.simple_list_item_2, null);
} else {
twoLineListItem = (TwoLineListItem) convertView;
}
TextView text1 = twoLineListItem.getText1();
TextView text2 = twoLineListItem.getText2();
text1.setText(persons.get(position).getName());
text2.setText("" + persons.get(position).getAge());
return twoLineListItem;
}
}
/Person.Java' 'in belirleyiciler bu şeydir API kullanımdan kaldırıldı
TwoLineListItem
kullanımını yapmaz Google, performans rehberinde tavsiyede bulunur. – Fred@Fred Android'in Performans İpuçları sayfası, geliştiriciye, üye değişkenlerine erişen yöntemlere atıfta bulunduğu "İÇERLİ alıcılardan/belirleyicilerden" kaçınmasını önerir.Bu, dünyanın geri kalanıyla etkileşime geçmek için sınıflarınızı uygun arayüzlerle yazmamanız gerektiği anlamına gelmez. Ve aynı ipucu içinde, ProGuard'ın tüm noktalara hitap eden getçiler ve ayarlayıcıları inkar ettiğine de dikkat çekiyorlar. – spaaarky21
Bu, hem gerekli bilgileri hem de koddaki çok pratik uygulamaları sağlayan mükemmel bir yanıttır. – LarsH