带有水平滚动视图的Android ListView

时间:2015-04-07 10:12:45

标签: android listview baseadapter

我想在列表视图的每一行中实现Horizo​​ntal Scrollview,并为每行添加多个布局附加到水平滚动视图。 (动态地)。

即每行可以附加3,4或5个布局。

问题: - 一切都很好,主要问题是第一行填充了所有行数据,滚动列表视图时,数据正在快速变化。

为什么会这样?

适配器

public class ListViewAdapter extends BaseAdapter {

    private Context context;
    private ArrayList<String> dataSet;
    LayoutInflater inflater;
    private View additionView;
    private LinearLayout subFunctionLayout;
    private TextView tv;
    LinearLayout layoutHolder;


    public ListViewAdapter(Context context) {
        this.context = context;
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    @Override
    public int getCount() {
        return 40;
    }

    @Override
    public Object getItem(int arg0) {
        return arg0;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;

        if(convertView==null){
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.row_scroll_layout, null);
            layoutHolder=(LinearLayout)convertView.findViewById(R.id.layoutHolder);


            for (int i = 0; i <5; i++) {
                //additionView = inflater.inflate(R.layout.inner_layout_file, null);
                subFunctionLayout = new LinearLayout(context);
                subFunctionLayout.setOrientation(android.widget.LinearLayout.VERTICAL);
                subFunctionLayout.setLayoutParams(new ViewGroup.LayoutParams(-1,-1));
                // ARGB: Opaque Red
                subFunctionLayout.setBackgroundColor(0x88ff0000);
                tv = new TextView(context);
                tv.setLayoutParams(new ViewGroup.LayoutParams(-1,-2));
                tv.setText("TEXT: " + position);
                // ARGB: Opaque Green
                tv.setBackgroundColor(0x5500ff00);
                subFunctionLayout.addView(tv);
                layoutHolder.addView(subFunctionLayout);
                } 

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



        return convertView;
    }

    class ViewHolder {
        TextView tv_titleExample;
        HorizontalScrollView hzView;
        LinearLayout linear_layout,main_linear_layout;
    }

}

活动布局

<ListView
    android:id="@+id/lvData"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" >
</ListView>

MAIN LIST VIEW ROW LAYOUT

<LinearLayout
    android:id="@+id/layoutHolder"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

</LinearLayout>

要附加到每行的水平滚动视图的自定义布局

<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6.0dip"
android:src="@drawable/ic_launcher" />

0 个答案:

没有答案