Je suis très nouveau dans le développement Android. J'essaie de construire une application avec des balises (qui sont ajoutées par des fragments). Dans l'un des fragments, j'essaie d'afficher une liste. Cette liste a été remplie à l'aide de ListAdapter que j'ai étendu de ArrayAdapter et que j'ai surchargé la méthode getView (). Ceci est mon fragment.
public class tabcontentActivity extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
View v = (LinearLayout) inflater.inflate(R.layout.tablayout, container,
false);
ListView lv = (ListView) v.findViewById(R.id.listview1);
ListViewAdapter adapter = new ListViewAdapter(container.getContext(),
Android.R.layout.simple_list_item_1, R.id.textview1);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
return v;
}
}
Et voici comment j'ai implémenté le ListAdapter
public class ListViewAdapter extends ArrayAdapter {
Context context1;
public ListViewAdapter(Context context,int resource, int textViewResourceId) {
super(context,resource,textViewResourceId);
this.context1 = context;
System.out.println("here aswell!!!!!!");
// TODO Auto-generated constructor stub
}
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
System.out.println("@@@I AM HERE@@@");
LayoutInflater inflater = LayoutInflater.from(context1);
convertView = inflater.inflate(R.layout.tablayout, null);
TextView wv = (TextView) convertView.findViewById(R.id.textview1);
String summary = "<html><body><h1>This is happening!!!</h1></body></html>";
wv.setText(Html.fromHtml(summary));
convertView.setTag(wv);
return convertView;
}
}
La mise en page XML est
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<ListView
Android:id="@+id/listview1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
</ListView>
<TextView
Android:id="@+id/textview1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:text="myreader" />
</LinearLayout>
Aidez-moi s'il vous plaît à trouver un moyen par lequel je peux faire ce travail.
Vous avez simplement oublié de fournir les données au constructeur, puis de faire l'appel correct dans le constructeur:
public ListViewAdapter(Context context,int resource, int textViewResourceId, List<YourObjectType> items) {
super(context,resource,textViewResourceId, items);
this.context1 = context;
// TODO Auto-generated constructor stub
}
Vous ne lui fournissez aucune donnée actuellement. Si vous voulez toujours voir ce qui se passe dans la liste, remplacez la fonction getCount ().
Je pense que c'est quelque chose de ce genre.
public int getCount(){
return 1;
}
Cela attirera un élément de votre liste. Et appelez également votre getView (). Et une fois que vous avez découvert comment alimenter votre source de données, remplacez getCount () par la taille de votre liste. Découvrez un tutoriel ici
http://www.shubhayu.com/Android/listview-with-arrayadapter-and-customized-items
Lorsque nous créons un tableau personnalisé, nous devons utiliser soit
public ArrayAdapter (Context context, int textViewResourceId, T[] objects)
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
public ArrayAdapter (Context context, int textViewResourceId, List<T> objects)
public ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects)
si nous n'utilisons pas l'adaptateur mentionné ci-dessus, nous devons redéfinir la méthode getCount ().
il semble que vous n'ayez pas spécifié de source de données pour votre adaptateur. Une source de données est tout ce qui fournit des données à afficher, par exemple une liste ou un curseur. S'il n'y a aucune donnée d'une source de données, getview () ne sera pas appelé du tout.
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
échanger les positions
Layoutinflator=getLayoutInflator();
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
View v = (LinearLayout) inflater.inflate(R.layout.tablayout, container,
false);
ListView lv = (ListView) v.findViewById(R.id.listview1);
ListViewAdapter adapter = new ListViewAdapter(container.getContext(),
Android.R.layout.simple_list_item_1, R.id.textview1);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
}
else{
View v = (LinearLayout) inflater.inflate(R.layout.tablayout, container,
false);
ListView lv = (ListView) v.findViewById(R.id.listview1);
ListViewAdapter adapter = new ListViewAdapter(container.getContext(),
Android.R.layout.simple_list_item_1, R.id.textview1);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);
}
return v;
}
et surcharger la méthode getcount
public int getCount(){
return 100;
}