Je suis débutant absolu au studio android. J'apprends maintenant sur la vue de liste. Lorsque j'utilise la vue liste avec un simple adaptateur de tableau. Il montre bien. Maintenant, j'essaie de créer un adaptateur personnalisé avec une disposition de ligne personnalisée. Mais quand je lance l'application. Ce n'est pas une erreur de lancer. Mais l'activité ne montre rien à l'écran. Je viens de recevoir l'écran vide et aucune donnée n'est liée à la liste. S'il vous plaît Quel est le problème avec mon code? S'il vous plaît, est-ce correct?Pourquoi ListView avec adaptateur personnalisé ne montrant rien?
C'est ma classe d'activité
public class CustomAdapterActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.custom_adapter);
ListItem item_1 = new ListItem();
item_1.Name = "Name 1";
item_1.Email = "Email 1";
item_1.Phone = "Phone 1";
ListItem item_2 = new ListItem();
item_1.Name = "Name 2";
item_1.Email = "Email 2";
item_1.Phone = "Phone 2";
ListItem item_3 = new ListItem();
item_1.Name = "Name 3";
item_1.Email = "Email 3";
item_1.Phone = "Phone 3";
ListItem item_4 = new ListItem();
item_1.Name = "Name 4";
item_1.Email = "Email 4";
item_1.Phone = "Phone 4";
ListItem[] items = { item_1 , item_2,item_3 , item_4 };
ArrayAdapter adapter = new ArrayAdapter<ListItem>(this,R.layout.custom_row,items);
ListView listView = (ListView)findViewById(R.id.custom_listview);
listView.setAdapter(adapter);
}
}
Ceci est ma classe de modèle de ligne nommé ListItem
public class ListItem {
public String Name;
public String Email;
public String Phone;
}
Ceci est la mise en page principale
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/custom_listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
C'est la mise en page pour la ligne.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="name"
android:id="@+id/row_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"/>
<TextView
android:layout_below="@+id/row_name"
android:id="@+id/row_email"
android:text="email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"/>
<TextView
android:layout_below="@+id/row_email"
android:id="@+id/row_phone"
android:text="phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"/>
</RelativeLayout>
Ceci est ma classe d'adaptateur personnalisé.
public class MyCustomAdapter extends ArrayAdapter<ListItem> {
private final Context context;
private final ListItem[] values;
public MyCustomAdapter(Context context,ListItem[] values)
{
super(context,-1,values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position,View convertView,ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.custom_row, parent, false);
TextView name_tf = (TextView)rowView.findViewById(R.id.row_name);
TextView email_tf = (TextView)rowView.findViewById(R.id.row_email);
TextView phone_tf = (TextView)rowView.findViewById(R.id.row_phone);
name_tf.setText(values[position].Name);
email_tf.setText(values[position].Email);
phone_tf.setText(values[position].Phone);
return rowView;
}
}
Alors s'il vous plaît ce qui ne va pas avec mon code? Aucune donnée n'est liée à ListView pendant que j'exécute l'application.
Puis j'ai suivi à Sankar V réponse. Ça a marché. Mais il a encore un léger problème comme dans l'image
Pourquoi ne item_4 est à lier LISTVIEW s'il vous plaît?
Le problème que vous créez 4 objets différents, mais la valeur de réglage pour seulement item_1 qui est remplacé à chaque fois et les dernières données d'article est affiché. –
Comment dois-je le modifier? Je pense que je mets de la valeur pour chaque rangée. Par exemple, comme name_tf.setText (valeurs [position] .Name). Comment puis-je le corriger? –
Vérifier ma mise à jour –