How To Add Data To Custom Baseadapter For Listview - Android
I have a custom BaseAdapter class that creates views for comments, usernames, and numbers. This BaseAdapter receives this information from An AsyncTask. The AsyncTask runs when the
Solution 1:
You try this :
publicclassComment {
String username;
String content;
Stringnumber;
}
Class Adapter:
publicclassCommentAdapterextendsBaseAdapter {
private List<Comment> listComment;
private Context context;
publicCommentAdapter(List<Comment> listComment, Context context) {
super();
this.listComment = listComment;
this.context = context;
}
@OverridepublicintgetCount() {
return listComment.size();
}
@Overridepublic Comment getItem(int position) {
return listComment.get(position);
}
@OverridepubliclonggetItemId(int arg0) {
return0;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
Viewv= convertView;
if (v == null) {
LayoutInflatermInflater= (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = mInflater.inflate(R.layout.comment_item, null);
}
finalTextViewtextViewUsername= (TextView) v
.findViewById(R.id.comment_Username);
finalTextViewtextViewNumber= (TextView) v
.findViewById(R.id.comment_number);
finalTextViewtextViewContent= (TextView) v
.findViewById(R.id.comment_Content);
finalStringusername= listComment.get(position).getUsername();
final String number= listComment.get(position).getNumber();
Stringcontent= listComment.get(position).getContent();
textViewUsername.setText(username);
textViewNumber.setText(number);
textViewContent.setText(content);
return v;
}
}
When you need to add new comment to list. just create new Comment and add to listComment(listComment.add(newComment)), after that, call adapter.notifyDataSetChanged();
Solution 2:
package com.example.baseadapter;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
publicclassMainActivityextendsActivityimplementsOnItemClickListener {
publicstaticfinal String[] title = newString[] {
"image 1", "image 2", "image 3", "image 4"
};
publicstaticfinal Integer[] images = {
R.drawable.aa, R.drawable.bb, R.drawable.cc, R.drawable.cc, R.drawable.dd
};
ListView listview;
List<RowItem> rowItems;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rowItems = newArrayList<RowItem>();
for (inti=0; i < title.length; i++) {
RowItemitem=newRowItem(images[i], title[i]);
rowItems.add(item);
}
listview = (ListView)findViewById(R.id.listview);
customBaseAdaptercba=newcustomBaseAdapter(this, rowItems);
listview.setAdapter(cba);
listview.setOnItemClickListener(this);
}
@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
// it is present.
getMenuInflater().inflate(R.menu.main, menu);
returntrue;
}
@OverridepublicvoidonItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(getApplicationContext(), "item selected", Toast.LENGTH_LONG).show();
}
publicclasscustomBaseAdapterextendsBaseAdapter {
Context context;
List<RowItem> rowItem;
publiccustomBaseAdapter(Context context, List<RowItem> listItem) {
this.context = context;
rowItem = listItem;
Log.d("const", "const");
}
@OverridepublicintgetCount() {
Log.d("count", "count");
return rowItem.size();
}
@Overridepublic Object getItem(int arg0) {
Log.d("item", "item");
return rowItem.get(arg0);
}
@OverridepubliclonggetItemId(int position) {
Log.d("const", "item id");
return rowItem.indexOf(getItem(position));
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
Log.d("const", "getview");
LayoutInflaterinflater= (LayoutInflater)context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
RowItemrowitem= (RowItem)getItem(position);
TextView textForTitle;
ImageView imgForImage;
convertView = inflater.inflate(R.layout.inflate, null);
textForTitle = (TextView)convertView.findViewById(R.id.textview);
imgForImage = (ImageView)convertView.findViewById(R.id.imageview);
textForTitle.setText(rowitem.getTitle());
imgForImage.setImageResource(rowitem.getImageId());
return convertView;
}
}
publicclassRowItem {
int imageId;
String title;
publicRowItem(int imageId, String title) {
this.imageId = imageId;
this.title = title;
}
publicintgetImageId() {
return imageId;
}
publicvoidsetImageId(int imageId) {
this.imageId = imageId;
}
public String getTitle() {
return title;
}
publicvoidsetStringTitle(String title) {
this.title = title;
}
@Overridepublic String toString() {
return title;
}
}
}
Post a Comment for "How To Add Data To Custom Baseadapter For Listview - Android"