2015-01-19 2 views
-1

Я пытаюсь создать список, в котором я должен отображать от двух до трех данных для строк каждого столбца, но я не могу это сделать, я получаю данные на изображении a, но я хочу для отображения на изображении b, я могу отображать только отдельные данные в каждой строке каждого столбца. Например, состояние столбца отображает значение номера элемента и номера стиля, я могу отображать только номер элемента, но не номер стиля.Отображение данных в listview

enter image description here

**DataDisplay xml** 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 


    <TextView 
     android:id="@+id/textView1" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="25dp" 
     android:text="TextView" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:textSize="25dp" 
     android:text="TextView" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:textSize="25dp" 
     android:text="TextView" /> 
    <TextView 
     android:id="@+id/textView4" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:textSize="25dp" 
     android:text="TextView" /> 
    <TextView 
     android:id="@+id/textView5" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:textSize="25dp" 
     android:text="TextView" /> 

</LinearLayout> 
**Listview xml** 
    <LinearLayout android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <ListView android:id="@+id/listView" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:divider="#00000000" 
      android:dividerHeight="5dp" 
      /> 
</LinearLayout> 

адаптер

public class CustomAdapter extends BaseAdapter{ 
    String [] result; 
    String [] result1; 
    String [] result2; 
    String [] result3; 
    String [] result4; 
    Context context; 
    int [] imageId; 
    private static LayoutInflater inflater=null; 
    public CustomAdapter(ItemActivity mainActivity, String[] prgmNameList,String[] prgmNameList1,String[] prgmNameList2,String[] prgmNameList3,String[] prgmNameList4) { 
     // TODO Auto-generated constructor stub 
     result=prgmNameList; 
     result1=prgmNameList1; 
     result2=prgmNameList2; 
     result3=prgmNameList3; 
     result4=prgmNameList4; 

     context=mainActivity; 

     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 



    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return result.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    public class Holder 
    { 
     TextView tv; 
     TextView tv1; 
     TextView tv2; 
     TextView tv3; 
     TextView tv4; 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     Holder holder=new Holder(); 
     View rowView; 
     rowView = inflater.inflate(R.layout.tabitem, null); 
     holder.tv=(TextView) rowView.findViewById(R.id.textView1); 
     holder.tv1=(TextView)rowView.findViewById(R.id.textView2); 
     holder.tv2=(TextView) rowView.findViewById(R.id.textView3); 
     holder.tv3=(TextView) rowView.findViewById(R.id.textView4); 
     holder.tv4=(TextView) rowView.findViewById(R.id.textView5); 
     holder.tv.setText(result[position]); 
     holder.tv1.setText(result1[position]); 
     holder.tv2.setText(result2[position]); 
     holder.tv3.setText(result3[position]); 
     holder.tv4.setText(result4[position]); 
     rowView.setBackgroundColor(Color.parseColor("#F1F1FF")); 

     rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(context, "You Clicked "+result[position], Toast.LENGTH_LONG).show(); 
      } 
     }); 
     return rowView; 
    } 

} 

вызывается из деятельности

public static String [] prgmNameList={"123456","456665","123445","5675343"}; 
    public static String [] prgmNameList1={"15.56","15.562","15.67","15.455"}; 
    public static String [] prgmNameList2={"9999","9999","9999","9999"}; 
    public static String [] prgmNameList3={"99%","99%","99%","99%"}; 
    public static String [] prgmNameList4={"9999","9999","9999","9999"}; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     setContentView(R.layout.itemlist); 

     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.item); 
     context=this; 

     lv=(ListView) findViewById(R.id.listView); 
     lv.setAdapter(new CustomAdapter(this, prgmNameList,prgmNameList1,prgmNameList2,prgmNameList3,prgmNameList4)); 
    } 
+0

как показывает данные в TextView? в адаптере? – Shvet

+0

Посмотрите на [this] (http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view=article_discription&aid=67&aaid=9) учебник. – Hemanth

+0

@DhavalGondaliya yes – sarah

ответ

0

Вам нужно создать пользовательский макет для элемента строки, где лет u может разместить два текстовых изображения один ниже другого, чтобы показать ваши данные по своему усмотрению. Затем переопределите метод вашего адаптера getView() и раздуйте этот настраиваемый макет и заполните его данными из массива/списка.

См. Метод getView() по ссылке, упомянутой в ответе giacavicchioli.

+0

Я пробовал это, но он не работает, его скрывают другие столбцы, можете ли вы отредактируйте в моем примере выше и покажите. – sarah

+0

См. Реализацию в этом вопросе: http: // stackoverflow.com/questions/22626825/android-customize-list-view-table-view-in-adapter Здесь пользовательский макет для элемента строки имеет таблицу, заполненную методом getView() адаптера – Price

+0

Я не использую tablelayout – sarah

0

Как user87049 сказал, что это решит вашу проблему Sarah:

**DataDisplay xml** 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 


<TextView 
    android:id="@+id/textView1" 
    android:layout_gravity="center" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textSize="25dp" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_gravity="center" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:layout_marginLeft="2dp" 
    android:textSize="25dp" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_gravity="center" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:layout_marginLeft="2dp" 
    android:textSize="25dp" 
    android:text="TextView" /> 
<TextView 
    android:id="@+id/textView4" 
    android:layout_gravity="center" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:layout_marginLeft="2dp" 
    android:textSize="25dp" 
    android:text="TextView" /> 
<TextView 
    android:id="@+id/textView5" 
    android:layout_gravity="center" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:layout_marginLeft="2dp" 
    android:textSize="25dp" 
    android:text="TextView" /> 

</LinearLayout> 

скажите мне, если это это не то, что вы хотите :) Ах, и с тех пор я немного занят в эти дни, и я не могу приходите на этот счет в stackoverflow, пожалуйста, пришлите мне письмо, чтобы получить мое внимание. [[email protected]]

0

Вот что я сделал. Сделать XML-файл, как это:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_weight="1"> 

    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     > 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#00FF00" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#0000FF" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="10dp" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#00FF00" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#0000FF" /> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="10dp" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#00FF00" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#0000FF" /> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="10dp" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#00FF00" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#0000FF" /> 
    </LinearLayout> 
</LinearLayout> 

Это ваш XML-файл пользовательских listview. Теперь в getView метод setText для этого всего textview, как и для вашего xml-файла.

Заканчивать внизу экрана:

Custom_listview_row

Смежные вопросы