簡體   English   中英

CustomList適配器不是TextView和ImageView

[英]CustomList adapter not TextView and ImageView

我想要一個顯示帶有自定義列表的數組的列表視圖,但是當我運行該應用程序時,列表視圖為空白。 list_item.xml的TextView或Image均未顯示。

這是MainActivity.java

public class MainActivity extends Activity {

    ListView list;
    List<Integer> users = new ArrayList<Integer>();
    List<String> imageId = new ArrayList<String>();

    Integer[] userNames;
    String[] imageUrls;

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

        users.add(50);
        imageId.add("https://color.adobe.com/build2.0.0-buildNo/resource/img/kuler/color_wheel_730.png");


        userNames = new Integer[users.size()];
        userNames = users.toArray(userNames);

        imageUrls = new String[imageId.size()];
        imageUrls = imageId.toArray(imageUrls);

        CustomList adapter = new
                CustomList(MainActivity.this, userNames, imageUrls);


        list=(ListView)findViewById(R.id.listView);
        list.setAdapter(adapter);

    }
}

這是CustomList.java:

public class CustomList extends ArrayAdapter<String> {

    private final Activity context;
    private final Integer[] userNames;
    private final String[] imageUrl;


    static class ViewHolderItem {
        TextView textViewItem;
    }

    public CustomList(Activity context,
                      Integer[] users, String[] imageUrl) {
        super(context, R.layout.list_item);
        this.context = context;
        this.userNames = users;
        this.imageUrl = imageUrl;

    }

    static class ViewHolder{
        TextView userName;
        ImageView image;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = context.getLayoutInflater();
        View rowView= inflater.inflate(R.layout.list_item, null, true);

        ViewHolder holder;

        if(convertView == null){
            convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null);
            holder = new ViewHolder();

            holder.userName = (TextView)convertView.findViewById(R.id.userName);
            holder.image = (ImageView)convertView.findViewById(R.id.img);

            convertView.setTag(holder);
        }else{
            holder = (ViewHolder)convertView.getTag();
        }


        holder.userName.setText(String.valueOf(userNames[position]));
        Picasso.with(context).load(imageUrl[position]).resize(1000, 1000).centerInside().into(holder.image);

        return convertView;

    }
}

這是list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@+id/userName" android:padding="10dp"/>

    <ImageView
        android:id="@+id/img"
        android:tag="@string/app_name"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        />
</TableLayout>

只需在您的CustomList.class中添加此行

@Override
public int getCount() {
    return userNames.length;
}

另外,我注意到TextView中沒有寬度和高度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM