How to add data to custom BaseAdapter for listView - Android

前端 未结 2 2028
萌比男神i
萌比男神i 2021-01-06 17:04

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 w

2条回答
  •  春和景丽
    2021-01-06 17:45

    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;
    
    public class MainActivity extends Activity implements OnItemClickListener {
        public static final String[] title = new String[] {
                "image 1", "image 2", "image 3", "image 4"
        };
    
        public static final Integer[] images = {
                R.drawable.aa, R.drawable.bb, R.drawable.cc, R.drawable.cc, R.drawable.dd
        };
    
        ListView listview;
    
        List rowItems;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            rowItems = new ArrayList();
            for (int i = 0; i < title.length; i++) {
                RowItem item = new RowItem(images[i], title[i]);
                rowItems.add(item);
            }
            listview = (ListView)findViewById(R.id.listview);
            customBaseAdapter cba = new customBaseAdapter(this, rowItems);
            listview.setAdapter(cba);
            listview.setOnItemClickListener(this);
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
            Toast.makeText(getApplicationContext(), "item selected", Toast.LENGTH_LONG).show();
        }
    
        public class customBaseAdapter extends BaseAdapter {
            Context context;
    
            List rowItem;
    
            public customBaseAdapter(Context context, List listItem) {
                this.context = context;
                rowItem = listItem;
                Log.d("const", "const");
            }
    
            @Override
            public int getCount() {
                Log.d("count", "count");
                return rowItem.size();
            }
    
            @Override
            public Object getItem(int arg0) {
                Log.d("item", "item");
                return rowItem.get(arg0);
            }
    
            @Override
            public long getItemId(int position) {
                Log.d("const", "item id");
                return rowItem.indexOf(getItem(position));
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                Log.d("const", "getview");
                LayoutInflater inflater = (LayoutInflater)context
                        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
                RowItem rowitem = (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;
            }
        }
    
        public class RowItem {
            int imageId;
    
            String title;
    
            public RowItem(int imageId, String title) {
                this.imageId = imageId;
                this.title = title;
            }
    
            public int getImageId() {
                return imageId;
            }
    
            public void setImageId(int imageId) {
                this.imageId = imageId;
            }
    
            public String getTitle() {
                return title;
            }
    
            public void setStringTitle(String title) {
                this.title = title;
            }
    
            @Override
            public String toString() {
                return title;
            }
        }
    
    }
    

提交回复
热议问题