【问题标题】:Android ListView with TextView and Spinner带有 TextView 和 Spinner 的 Android ListView
【发布时间】:2013-03-21 21:12:05
【问题描述】:

这里的初学者问题我想知道是否有人可以指出我正确的方向。我需要一个“帐户”列表视图,其中每个项目都包含一个文本视图,以及一个可以从预设数量中选择的微调器,所以每个项目都会像这样:

 ________________________
|TextView---------Spinner|
|________________________|

这是我目前所拥有的:
activity_topup.xml 这是活动的主要 xml

<ListView 
         android:id="@+id/topup_accounts_listview" 
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="1"
         android:background="@color/stq_grey"
         android:divider="@android:color/transparent"
         android:dividerHeight="20.0sp"/>

然后在我的java文件中TopUpActivity.java

String[] listAccounts = { "Acc1", "Acc2", "Acc3"};        
accountListAdapter = new ArrayAdapter<String>(this, R.layout.listview_item_accounts, R.id.accounts_list_tv, listAccounts);
        listView = (ListView)findViewById(R.id.topup_accounts_listview);
        listView.setAdapter(accountListAdapter);

listview_item_accounts.xml 包含每个项目的内容(文本视图和微调器)

 <TextView
    android:id="@+id/accounts_list_tv"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/accounts_list_amt_spinner"
    android:background="@drawable/list_item_selector_grey"
    style="@style/ListText" />

 <Spinner
    android:id="@id/accounts_list_amt_spinner"
    android:layout_width="96dp"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:prompt="@string/topup_amt_prompt"
    android:background="@drawable/list_item_selector_blue"
    style="@style/ListText"  />

我在正确的轨道上吗?!结果有点正确,但我不太清楚如何填充微调器,我只能填充我认为使用这种方法的文本视图。我将其添加到 java 文件中以尝试填充微调器,但微调器仍然为空:

//Inflate the listview items
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vi = inflater.inflate(R.layout.listview_item_accounts, null);
//Get the spinner
amt = (Spinner)vi.findViewById(R.id.accounts_list_amt_spinner);
//Add the values to the spinner by setting this adapter
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.topup_amts, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
amt.setAdapter(adapter);

Here is the result(旋转器为蓝色背景):

当我点击其中一个微调器时,它们是空的,I get this

【问题讨论】:

    标签: android android-listview android-spinner


    【解决方案1】:

    你必须在它的父视图中找到你的子视图。例如在你的适配器的getView 中,你 iflate 你的项目(来自 listview_item_accounts.xml)作为 GroupView 名称为“项目”,那么你必须找到微调器在里面:

    Spinner amt = (Spinner)item.findViewById(R.id.accounts_list_amt_spinner);
    

    如果你使用

    Spinner amt = (Spinner)findViewById(R.id.accounts_list_amt_spinner);
    

    您试图在内容视图中找到其 id 等于“R.id.accounts_list_amt_spinner”的视图,而不是在每个项目中。

    【讨论】:

    • 好的,我在原始帖子中添加了一些额外的微调器代码,它还不是正确的,但至少它是正确的吗?!
    • 谢谢,我添加了几张图片。很高兴知道我在正确的轨道上!
    • @hasanghaforian 我认为您的回答很好,非常感谢您,但我仍然得到相同的结果,就好像我从来没有费心填充微调器值(最后一段代码在原帖)...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多