【问题标题】:Add TextView to an adapter that extends BaseAdapter将 TextView 添加到扩展 BaseAdapter 的适配器
【发布时间】:2015-05-27 18:12:56
【问题描述】:

我正在尝试将解析查询中的TextView 传递给Adapter,并设置列表适配器。 UserAdapter 类扩展自 BaseAdapter。 我希望ListView 再显示一个String/int(使用另一个TextView)。 我该怎么做?

我的代码:
UserAdapter 设置为ListView

uList = new ArrayList<ParseUser>(li);
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(new UserAdapter());

UserAdapterclass:

private class UserAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        return uList.size();
    }

    @Override
    public ParseUser getItem(int arg0) {
        return uList.get(arg0);
    }

    @Override
    public long getItemId(int arg0) {
        return arg0;
    }

    // How would I add another string when using `getView`?
    @Override
    public View getView(int pos, View v, ViewGroup arg2) {
        if (v == null) {
            v = getLayoutInflater().inflate(R.layout.chat_item, null);
        }

        // I need to add another 'TextView' here.
        ParseUser c = getItem(pos);
        TextView lbl = (TextView) v;
        lbl.setText(c.getUsername());
        lbl.setCompoundDrawablesWithIntrinsicBounds(
                c.getBoolean("online") ? R.drawable.ic_online
                        : R.drawable.ic_offline, 0, R.drawable.arrow, 0);

        return v;
    }
}

下面是chat_item.xml这是.xmlTextView 设置在getView 如何在此处添加另一个TextView

 <?xml version="1.0" encoding="utf-8"?>
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:drawableRight="@drawable/arrow"
     android:orientation="horizontal"
     android:padding="@dimen/pad_10dp"
     android:text="TextView"
     android:textColor="@color/main_color_gray_dk"
     android:textSize="@dimen/pad_30dp"
     android:drawableLeft="@drawable/ic_online"
     android:drawablePadding="@dimen/pad_10dp" />

【问题讨论】:

    标签: android android-arrayadapter android-adapter


    【解决方案1】:

    @user370305 声明了 XML 部分。我将描述 Java 部分。在你扩充了那个 XML 文件之后,然后:

    // Grab a reference to the first TextView
    TextView lbl1 = (TextView) v.findViewById(R.id.textview1);
    
    // Grab a reference to the second TextView
    TextView lbl2 = (TextView) v.findViewById(R.id.textview2);
    
    // Do stuff with 'lbl1' and 'lbl2'
    

    【讨论】:

    • 我做到了,你能描述一下java部分吗?
    • @DoronBenDavid 我应该描述哪一部分?
    • 首先感谢您的帮助。我正在运行解析查询,并且我为每个用户获得了不同的 Int,我想要做的是使用用户名传递 Int on Use Adapter。你能帮我吗?
    • 这部分:uList = new ArrayList(li);将用户信息传递给 UserAdapter 并从他们传递给 listView,我想用 :uList = new ArrayList(li); 向 UserAdapter 添加另一个 Int
    【解决方案2】:

    使用ViewGroup 作为TextViews 的父视图。 LinearLayoutRelativeLayout 可能最适合您的情况。

    这是一个例子:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/arrow"
            android:orientation="horizontal"
            android:padding="@dimen/pad_10dp"
            android:text="TextView"
            android:id="@+id/textView1"
            android:textColor="@color/main_color_gray_dk"
            android:textSize="@dimen/pad_30dp"
            android:drawableLeft="@drawable/ic_online"
            android:drawablePadding="@dimen/pad_10dp" />
    
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="@dimen/pad_10dp"
            android:text="TextView2"
            android:id="@+id/textView2"
            android:textColor="@color/main_color_gray_dk"
            android:textSize="@dimen/pad_30dp"
            android:drawableLeft="@drawable/ic_online"
            android:drawablePadding="@dimen/pad_10dp" />
    </LinearLayout>    
    

    【讨论】:

    • 我正在运行解析查询,并且我为每个用户获得了不同的 Int,我想要做的是使用用户名传递 Int on Use Adapter。这部分:uList = new ArrayList(li);将用户信息传递给 UserAdapter 并从他们传递给 listView,我想用 :uList = new ArrayList(li); 向 UserAdapter 添加另一个 Int
    • @DoronBenDavid - ParseUser 类包含什么? ParseUser 的邮政编码与您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多