1

カスタム レイアウトで Listview を作成するのはこれが初めてです。

Oncreate(); の後にリストビューを新しい情報で更新できないという問題があります。使用されています。したがって、リストは非常に静的です。

次のようなカスタムリストビューアダプターを作成しようとしています:

public class MainListCustomBaseAdapter extends BaseAdapter {

static ArrayList<ListItems> DataSomething;
static Context Cont;

public MainListCustomBaseAdapter (ArrayList<ListItems> data, Context c){
    DataSomething = data;
    Cont = c;
}

public int getCount() {
    // TODO Auto-generated method stub
    return DataSomething.size();
}

public Object getItem(int position) {
    // TODO Auto-generated method stub
    return DataSomething.get(position);
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
     View v = convertView;
     if (v == null)
     {
        LayoutInflater vi = (LayoutInflater)Cont.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.mainlistlayout, null);
     }

       ImageView image = (ImageView) v.findViewById(R.id.ListImage);
       TextView titleView = (TextView)v.findViewById(R.id.title);
       TextView DetailItemView = (TextView)v.findViewById(R.id.DetailItem);


       ListItems msg = DataSomething.get(position);
       image.setImageResource(msg.icon);
       titleView.setText(msg.title);
       DetailItemView.setText("ItemDetails: "+msg.ItemDetails);


    return v;
}

public void updateResults(ArrayList<MainListCustomBaseAdapter> results){
    notifyDataSetChanged();


}


}

私のOncreateは次のようになります。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


   RecipeList = (ListView) findViewById(R.id.mainListView);

    ShoppingItems = new ArrayList<ListItems>();
    RecipeList.setAdapter(new MainListCustomBaseAdapter(ShoppingItems, this));

    ListItems Detail;
    Detail = new ListItems();
    Detail.setIcon(R.drawable.food);
    Detail.setName("Food Stuff");
    Detail.setItemDetails("ItemDetailsComp");
    ShoppingItems.add(Detail);

}

listitem は次のようになります。

public class ListItems {
        public int icon ;
        public String title;
        public String ItemDetails;


        public String getName() {
            return title;
        }

        public void setName(String from) {
            this.title = from;
        }

        public String getItemDetails() {
            return ItemDetails;
        }

        public void setItemDetails(String ItemDetailsComp) {
            this.ItemDetails = ItemDetailsComp;
        }

        public int getIcon() {
            return icon;
        }

        public void setIcon(int icon) {
            this.icon = icon;
        }

}

リストビューを動的に更新するにはどうすればよいですか? 多分 SetInvalidatedViews() または notifyDatasetchanged() で?

どんな助けでも大歓迎です。

4

2 に答える 2