Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何向listview添加额外的自定义行?_Android_List_Listview - Fatal编程技术网

Android 如何向listview添加额外的自定义行?

Android 如何向listview添加额外的自定义行?,android,list,listview,Android,List,Listview,正如标题所示,我正试图在列表视图中添加一个额外的自定义行,以允许更多的自定义。我目前在列表视图中设置了一个自定义行,我们知道它将根据输入的信息量不断重复。现在,我想扩展列表视图以显示多个自定义行,我一直在调整代码,如果有人能看一下,我将不胜感激 我已经解释了我当前的设置 首先,我们有一个视图持有者本身,它作为设置信息的中间人 public class ViewHolderWine { public ImageView wineImage; public TextView wineName; p

正如标题所示,我正试图在列表视图中添加一个额外的自定义行,以允许更多的自定义。我目前在列表视图中设置了一个自定义行,我们知道它将根据输入的信息量不断重复。现在,我想扩展列表视图以显示多个自定义行,我一直在调整代码,如果有人能看一下,我将不胜感激

我已经解释了我当前的设置

首先,我们有一个视图持有者本身,它作为设置信息的中间人

public class ViewHolderWine {

public ImageView wineImage;
public TextView wineName;
public TextView  wineDes;
public TextView  winePrice;


public void setDataIntoViewHolder (List_String listString ){

    wineImage.setImageResource(listString.getIcon_wine());
    wineName.setText(listString.getWineName());
    wineDes.setText(listString.getWinedes());
    winePrice.setText(listString.getWinePrices());

}
其次,我们有我的列表字符串,其中有getter和setter

public class List_String {

int icon_wine;
String wineName;
String winedes;
String winePrices;


public List_String(int icon_wine, String wineName, String winedes, String winePrices) {
    this.icon_wine = icon_wine;
    this.wineName = wineName;
    this.winedes = winedes;
    this.winePrices = winePrices;

}

public String getWinePrices() {
    return winePrices;
}

public void setWinePrices(String winePrices) {
    this.winePrices = winePrices;
}

etc......
接下来是列表片段

 public class List extends ListFragment {

java.util.List<List_String> lst;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

  listData();
    // Adapter custom;


     Adapter myAdapter = new Adapter(getActivity(), R.layout.custom_list, lst);

    setListAdapter(myAdapter);

    return super.onCreateView(inflater, container, savedInstanceState);

}


public void listData() {

    lst = new ArrayList<List_String>();

    lst.add(new List_String(R.drawable.thumb, etc....
公共类列表扩展了ListFragment{
java.util.List lst;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
listData();
//适配器定制;
Adapter myAdapter=新适配器(getActivity(),R.layout.custom_list,lst);
setListAdapter(myAdapter);
返回super.onCreateView(充气机、容器、savedInstanceState);
}
public void listData(){
lst=新的ArrayList();
添加(新列表)字符串(R.drawable.thumb等)。。。。
最后,我用一个适配器把所有的部件组装在一起

 public class Adapter extends ArrayAdapter<List_String> {

List<List_String> lstWine;
LayoutInflater inflater;

public Adapter(Context context, int resource, java.util.List<List_String> objects) {
    super(context, resource, objects);


    lstWine = objects;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}


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

    View view = convertView;

    ViewHolderWine viewholder;


    if (view == null){

        viewholder = new ViewHolderWine();


                view = inflater.inflate(R.layout.custom_list, null);

                viewholder.wineImage = (ImageView) view.findViewById(R.id.wineImage);
                viewholder.wineName = (TextView) view.findViewById(R.id.wineName);
                viewholder.wineDes = (TextView) view.findViewById(R.id.wineDes);
                viewholder.winePrice = (TextView) view.findViewById(R.id.winePrice);



        view.setTag(viewholder);

    }else{

        viewholder = (ViewHolderWine) view.getTag();

    }

    List_String list = lstWine.get(position);
    viewholder.setDataIntoViewHolder(list);


    return view;

}
公共类适配器扩展了ArrayAdapter{
葡萄酒清单;
充气机;
公共适配器(上下文、int资源、java.util.List对象){
超级(上下文、资源、对象);
lstWine=对象;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
视窗夹线视窗夹;
如果(视图==null){
viewholder=新ViewHolderWine();
视图=充气机。充气(R.layout.custom_列表,空);
viewholder.wineImage=(ImageView)view.findviewbyd(R.id.wineImage);
viewholder.wineName=(TextView)view.findViewById(R.id.wineName);
viewholder.wineDes=(TextView)view.findViewById(R.id.wineDes);
viewholder.winePrice=(TextView)view.findViewById(R.id.winePrice);
view.setTag(viewholder);
}否则{
viewholder=(ViewHolderWine)view.getTag();
}
List_String List=lstWine.get(位置);
viewholder.setDataIntoViewHolder(列表);
返回视图;
}

承载列表视图的活动的布局如下所示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:weightSum="1">

     <ListView
          android:id="@+id/list"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
     </ListView>
     <ListView
          android:id="@+id/list2"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
     </ListView>
</LinearLayout>

你想制作一个可扩展的列表吗?或者你只是想让一些底部的行具有不同的外观?基本上,一些行与上面的行具有不同的外观,以便我可以混合和匹配。它们是否包含相同类型的数据?例如,我的第一个自定义行使用3个文本视图和1个图像视图。我正在考虑使用一个带有文本视图和开关的行。B但是,一旦我知道如何添加一个额外的自定义行,我希望我可以从那里获取它。因为您有不同类型的数据,所以需要创建不同的适配器,这意味着您将有一个单独的列表视图,可以放在另一行的底部
//populate your first list
    myList.add(0, new Model("Full name 1", "Good"));
    myList.add(1, new Model("Full name 2", "Bad"));
    myList.add(2, new Model("Full name 3", "Worse"));
    myList.add(3, new Model("Full name 4", "Mediocre"));

//populate your second list
    myList2.add(0, new Model2("Full name 5", true));
    myList2.add(1, new Model2("Full name 6", true));
    myList2.add(2, new Model2("Full name 7", false));

//initialize adapters
    adapter = new mAdapter(StartActivity.this,myList);
    adapter2 = new mAdapter2(StartActivity.this,myList2);

//retrieve the list views
    lv= (ListView) findViewById(R.id.list);
    lv2= (ListView) findViewById(R.id.list2);

//set the adapters
    lv.setAdapter(adapter);
    lv2.setAdapter(adapter2);