1

アイテムを動的に追加するリストビューがあります。(私の選択した)いくつかのアイテムを左側に配置し、いくつかを右側に配置する必要があります。これはAndroidのListViewで可能ですか?

//アダプタ

if (convertView == null) {
                holder = new EventViewHolder();
                if (type == 1) {
                    convertView = inflater.inflate(
                            R.layout.multi_line_list_item, null);
                    holder.mtvMessage = (TextView) convertView
                    .findViewById(R.id.tvMessage);
                    holder.mtvMessage.setGravity(Gravity.LEFT);
                    holder.mtvMessage.setBackgroundResource(R.drawable.chatbluebox);
                    convertView.setTag(holder);
                }else{
                    convertView = inflater.inflate(
                            R.layout.multi_line_list_item, null);
                    holder.mtvMessage = (TextView) convertView
                    .findViewById(R.id.tvMessage);
                    holder.mtvMessage.setGravity(Gravity.RIGHT);
                    holder.mtvMessage.setBackgroundResource(R.drawable.chatgreenbox);
                    convertView.setTag(holder);

            }

それができるかどうか教えてください、そして私に良い解決策を提案しますか?

4

3 に答える 3

5
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"

これらの行を listView xml エントリに追加します..,.

右揃えと左揃えの場合は、2 つのレイアウト xml を維持し、1 つを右揃えに、もう 1 つを左揃えにします (見た目は何でも構いません)。次に、listAdapter の getView() メソッドで条件を設定し、必要に応じてこれらの xml を膨張させます。

if (convertView == null)
    if(some condition)
        convertView = mInflater.inflate(R.layout.rightxml, null);
    else
        convertView = mInflater.inflate(R.layout.leftxml, null);
    ....
于 2012-10-30T07:36:04.620 に答える
2

ほとんどの作業を行うことができるListView モードのstackFromBottomtranscriptModeを見てください。

セル内の項目を左右に揃えるには、たとえば、アダプタの getView メソッドで重力を左右に設定します。

于 2012-10-30T07:34:33.863 に答える
1

以下を使用します。

adapter.notifyDataSetChanged();

その後

listView.setSelection(items.size()-1);

重力の場合 メソッドで重力を動的に設定する必要がありますgetview()

例えば ​​:-

textview1.setGravity(Gravity.RIGHT);
于 2012-10-30T07:35:19.510 に答える