2017-02-12 8 views
1

1イメージと2テキストを持つリストビューを作成しました。 しかし、出力では、リストビューは2番目のtextviewデータのみを表示しています。最初のテキストビューは空白です。リストビューアイテムは1つのテキストビューしか表示しません。データアンドロイド

ここは私のリストビューの単一項目レイアウトです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="55dp" 
android:orientation="horizontal" 
android:background="#ffffff"> 

<!-- icon --> 
<ImageView 
    android:id="@+id/item_icon" 
    android:layout_width="32dp" 
    android:layout_height="32dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="10dp" 
    android:src="@drawable/icon" 
    /> 

<!-- title --> 
<TextView 
    android:id="@+id/item_title" 
    android:layout_width="0dp" 
    android:layout_weight="1" 
    android:layout_height="wrap_content" 
    android:text="hello" 
    android:layout_marginTop="13dp" 
    android:textSize="18dp" /> 

<TextView 
    android:id="@+id/item_counter" 
    android:layout_width="32dp" 
    android:layout_height="32dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="10dp" 
    android:text="1" 
    android:background="@drawable/counter" 
    android:gravity="center" 
    android:textColor="#FFFFFF" 
    android:textSize="12sp" 
    android:textStyle="bold" /> 

<!-- counter --> 
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/arrow" 
    android:layout_centerVertical="true" 
    android:layout_marginTop="14dp" 
    android:id="@+id/arrow"/> 

、ここでデータ・モデル・コードである:ここで

public class DataModel { 

    String name; 
    String counter; 

    public DataModel(String name,String counter) { 
     this.name=name; 
     this.counter=counter; 
    } 

    public String getName() { return name;} 

    public String getCounter() { 
     return counter; 
    } 
} 

はCustomAdapter.java

public class CustomAdapter extends ArrayAdapter<DataModel> { 

    private ArrayList<DataModel> dataSet; 
    Context mContext; 

    // View lookup cache 
    private static class ViewHolder { 
     TextView txtName; 
     TextView txtCounter; 
     ImageView icon; 
    } 

    public CustomAdapter(ArrayList<DataModel> data, Context context) { 
     super(context, R.layout.category_list, data); 
     this.dataSet = data; 
     this.mContext=context; 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Get the data item for this position 
     DataModel dataModel = getItem(position); 
     // Check if an existing view is being reused, otherwise inflate the view 
     ViewHolder viewHolder; // view lookup cache stored in tag 

     if (convertView == null) { 

      viewHolder = new ViewHolder(); 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      convertView = inflater.inflate(R.layout.category_list, parent, false); 
      viewHolder.txtName = (TextView) convertView.findViewById(R.id.item_title); 
      viewHolder.txtCounter = (TextView) convertView.findViewById(R.id.item_counter); 
      viewHolder.icon = (ImageView) convertView.findViewById(R.id.item_icon); 
      convertView.setTag(viewHolder); 
     } 
     else 
     { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.txtName.setText(dataModel.getName()); 
     viewHolder.txtCounter.setText(dataModel.getCounter()); 
     // Return the completed view to render on screen 
     return convertView; 
    } 
} 

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    findViewById(); 
    clickListeners(); 


    listView=(ListView)findViewById(R.id.caregoryList); 

    dataModels= new ArrayList<>(); 


    dataModels.add(new DataModel("Banana Bread", " 9")); 
    dataModels.add(new DataModel("Cupcake", "9")); 
    dataModels.add(new DataModel("Donut","9")); 
    dataModels.add(new DataModel("Eclair", "9")); 
    dataModels.add(new DataModel("Froyo", "0")); 
    dataModels.add(new DataModel("Gingerbread", "0")); 
    dataModels.add(new DataModel("Honeycomb","1")); 
    dataModels.add(new DataModel("Ice Cream Sandwich", "1")); 
    dataModels.add(new DataModel("Jelly Bean", "2")); 
    dataModels.add(new DataModel("Kitkat", "3")); 
    dataModels.add(new DataModel("Lollipop","4")); 



    adapter= new CustomAdapter(dataModels,getApplicationContext()); 

    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      DataModel dataModel= dataModels.get(position); 
      Snackbar.make(view, dataModel.getName()+"\n"+dataModel.getName()+" API: "+dataModel.getCounter(), Snackbar.LENGTH_LONG) 
        .setAction("No action", null).show(); 
     } 
    }); 

このコードを実行すると、listviewは2番目のカウンタテキストのみを表示します。最初のテキストビューは空白として表示されます。

+1

最初のtextviewの 'layout_width'は' 0dp'です。 – zed

+0

ですが、私はlayout_weightを追加しました –

+0

あなたの問題はまだ解決されていますか? – tahsinRupam

答えて

0

あなたのxmlとコード内のほとんどの問題は、あなただけの、textColor属性が不足している、このようのためにあります。テキストはデフォルトの白です(おそらく、あなたが選択したテーマに関連しています)。 ただ、たとえば色ITEM_TITLEのTextViewに追加します。

android:textColor="@android:color/holo_orange_dark" 

と、テキストが表示されます。

+0

@ Dus-ありがとうございました。:D –

0

私は、あなたのXMLでのいくつかの変更を加え、それをコピーして貼り付けてみてください:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="55dp" 
android:orientation="horizontal" 
android:background="#ffffff"> 

<!-- icon --> 
<ImageView 
    android:id="@+id/item_icon" 
    android:layout_width="32dp" 
    android:layout_height="32dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="10dp" 
    android:src="@drawable/icon" 
    /> 

<!-- title --> 
<TextView 
    android:id="@+id/item_title" 
    android:layout_width="32dp" 
    android:layout_weight="1" 
    android:layout_height="32dp" 
    android:text="hello" 
    android:layout_marginTop="13dp" 
    android:textSize="18dp" /> 

<TextView 
    android:id="@+id/item_counter" 
    android:layout_width="32dp" 
    android:layout_height="32dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="10dp" 
    android:text="1" 
    android:background="@drawable/counter" 
    android:gravity="center" 
    android:textColor="#FFFFFF" 
    android:textSize="12sp" 
    android:textStyle="bold" /> 

<!-- counter --> 
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/arrow" 
    android:layout_centerVertical="true" 
    android:layout_marginTop="14dp" 
    android:id="@+id/arrow"/> 
<LinearLayout/> 
+0

@ Androidss-まだ最初のテキストビューのデータを表示していません –

関連する問題