2017-02-17 3 views
0

Как видно из названия, я пытаюсь добавить дополнительную пользовательскую строку в свой список, чтобы разрешить большую настройку. В настоящее время у меня есть одна настраиваемая строка, установленная в виде списка, которая, как мы знаем, будет непрерывно повторяться в зависимости от объема ввода информации. Теперь, когда я хочу расширить представление списка, чтобы отобразить несколько пользовательских строк, я застрял в настройке своего кода и был бы признателен, если бы кто-то мог посмотреть.Как добавить дополнительную пользовательскую строку в список?

Я представил объяснение моей текущей установки.

Во-первых, у нас есть сам держатель вида, который работает как промежуточный для установки информации.

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()); 

} 

Во-вторых, у нас есть свой List_String, в котором созданы геттеры и сеттеры.

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...... 

Далее мы имеем ListFragment

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.... 

Наконец я тогда принес все части вместе с помощью адаптера.

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; 

} 
+0

сделать вы хотите, чтобы сделать расширяющийся список? или вы просто хотите, чтобы некоторые нижние строки имели другой вид? – kampangala

+0

В основном некоторые строки, которые имеют разные взгляды на один выше, чтобы я мог смешивать и сопоставлять. – Steven

+0

содержат ли они данные того же типа? – kampangala

ответ

0

Компоновка для деятельности, на котором размещены представления списка, как это

<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> 

В классе активности

//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);