Hinzufügen von Daten in Listview Runtime Benutzerdefinierte Adapter mit
PROBLEM: wenn ich klicken bin auf Schaltfläche Hinzufügen dann alle Daten sind klar und nur ein Element ist zeigt .... Ich möchte auch alte Elemente anzeigen als neu aufgenommener Artikel ...
dies ist mein Code .....
MODELL Klasse
public class GroupModel {
ArrayList<String> G_member=new ArrayList<String>();
ArrayList<String> G_name = new ArrayList<String>();
public ArrayList<String> getG_member() {
return G_member;
}
public void setG_member(ArrayList<String> g_member) {
G_member = g_member;
}
public void addToGmember(String gname){
this.G_member.add(gname);
}
public ArrayList<String> getG_name() {
return G_name;
}
public void setG_name(ArrayList<String> g_name) {
G_name = g_name;
}
public void addToGname(String name){
this.G_name.add(name);
}
}
zentral-
public class MainActivity extends ActionBarActivity {
Context context=this;
private ListView lv;
ImageView plus_img;// plus button to add GROUP Runtime.
GroupModel model = new GroupModel();
GroupAdapter adapter;
ListView myListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.group__listview);
myListView = lv;
//plus image
plus_img = (ImageView) findViewById(R.id.add_img);
plus_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
model.addToGname("jignesh");
model.addToGmember("8");
ArrayList<GroupModel> l = new ArrayList<GroupModel>();
l.add(model);
// adapter.setListData(getListData());
myListView.setAdapter(new GroupAdapter(context, l));
// adapter.notifyDataSetChanged();
}
});
adapter= new GroupAdapter(context,getListData());
lv.setAdapter(adapter);
}
private ArrayList getListData() {
ArrayList list = new ArrayList();
int untilloop;
if(model.getG_member().size()>10)
{
untilloop = model.getG_member().size();
for (int i=0;i<untilloop;i++)
{
model.getG_member();
model.getG_name();
list.add(model);
}
}
else{
untilloop=10;
for(int i = 0; i <untilloop; i++){
model.getG_name().add("raj "+i);
model.getG_member().add(""+i);
list.add(model);
}
}
return list;
}
}
ADAPTER Klasse
public class GroupAdapter extends BaseAdapter {
ArrayList<GroupModel> glist;
Context context;
private LayoutInflater layoutInflater;
public GroupAdapter(Context mainActivity, ArrayList<GroupModel> glist) {
context = mainActivity;
this.glist=glist;
layoutInflater = LayoutInflater.from(context);
}
public void setListData(ArrayList<GroupModel> data){
glist = data;
}
@Override
public int getCount() {
return glist.size();
}
@Override
public Object getItem(int position) {
return glist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
// LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = layoutInflater.inflate(R.layout.row_list_data,null);
holder= new ViewHolder();
holder.g_number=(TextView)convertView.findViewById(R.id.txt_g_number);
holder.g_name=(TextView)convertView.findViewById(R.id.txt_g_name);
holder.nxt_aerrow=(ImageView)convertView.findViewById(R.id.img_nxt);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.g_number.setText(glist.get(position).getG_member().get(position).toString());
holder.g_name.setText(glist.get(position).getG_name().get(position).toString());
holder.nxt_aerrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"image click",Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
static class ViewHolder {
TextView g_number,g_name;
ImageView nxt_aerrow;
}
}
Mögliche Duplikat [Listview mit einem benutzerdefinierten Adapter, Hinzufügen von Elementen eins nach dem anderen ] (http://stackoverflow.com/questions/9416215/listview-with-a-custom-adapter-addin g-elements-one-by-one) –
In OnClick erstellen Sie ein Array-Objekt, und wenn Sie es an Ihren Adapter übergeben, wird jedes Mal nur eine Zeile erstellt. Erstellen Sie diese Array-Liste auf globaler Ebene und fügen Sie Ihr Gruppenmitglied hinzu. wird hoffentlich Ihr Problem lösen –
Vielen Dank für die Antwort ,,,, Ich möchte eine Zeile hinzufügen, wenn OnClick ... –