1

リスト ビューを使用してデータを表示し、それをカスタム アダプターと一緒に使用しています。現在、イメージ ビューをリスト アイテムとして表示したいと考えています。その場合、動的な線形レイアウトを作成し、そこに画像ビューを追加しました。ここで、何らかの条件で、このイメージ ビュー レイアウトがリスト ビューの最後のリスト アイテムとして、リストに追加された新しいアイテムとして表示されるようにしたいと考えています。

レイアウトを動的に生成する

LinearLayout linearLayout = new LinearLayout(UserChatActivity.this);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                     LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

            ImageView img = new ImageView(UserChatActivity.this);
            img.setImageBitmap(BitmapFactory.decodeFile(picturePath));


            linearLayout.addView(img, layoutParams);


            mList.addView(linearLayout);

しかし、次のようなエラーが表示されます: - ビューを直接 adapterViews に追加することはできません。アダプターのビューを拡張する必要があることはわかっていますが、リストにある以前のデータを使用して新しいビューを追加する方法.???

ありがとう

4

4 に答える 4

4

MergeAdapterはあなたの問題を完全に解決すると思います。

于 2012-12-06T07:30:20.337 に答える
2

これを試すことができます。アダプターの getView() にコードを入れてください。

if (view == null) 
{
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    view = vi.inflate(R.layout.list, null);
                    **// list.xlm is your layout**
} 

**lnHolder is in list.xml**
LinearLayout lnHolder = (LinearLayout ) view.findViewById(R.id.lnHolder);

LinearLayout linearLayout = new LinearLayout(UserChatActivity.this);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                         LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);    
ImageView img = new ImageView(UserChatActivity.this);
img.setImageBitmap(BitmapFactory.decodeFile(picturePath));   
linearLayout.addView(img, layoutParams);
 lnHolder.addView(linearLayout);
于 2012-12-06T07:41:05.717 に答える
1

getView() メソッドは次のようになります。

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

            if (position == 10) //if you already know the position use static position
                //  else mydatalist.get(position).hasImage()== true and 
                // make one function hasImage in your data structure which checks weather its a image or text 
            {
                convertView = _inflater.inflate(R.layout.simplelinearlayout,
                        null);

                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);

                ImageView img = new ImageView(UserChatActivity.this);
                img.setImageBitmap(BitmapFactory.decodeFile(picturePath));

                convertView.addView(img, layoutParams);
            } else {
                if (convertView == null) {
                    convertView = _inflater.inflate(R.layout.missingitem_row,
                            null);
                    viewHolder = new ViewHolder();
                    viewHolder.textTitle = (TextView) convertView
                            .findViewById(R.id.txtTitle);

                    convertView.setTag(viewHolder);

                } else {
                    viewHolder = (ViewHolder) convertView.getTag();
                }

                viewHolder.textTitle.setText(messageText);
            }
            return convertView;
        }
于 2012-12-06T07:45:01.243 に答える
-1

notifiyDataSetChange() メソッドを使用してアダプタを更新します

listView 動的追加項目

于 2012-12-06T08:23:28.167 に答える