2016-05-29 65 views
0

我想要一個列表視圖來顯示具有自定義列表的數組,但是當我運行該應用程序時,列表視圖變爲空白。沒有顯示list_item.xml的TextView或Image。CustomList適配器不是TextView和ImageView

這裏是MainActivity.java

public class MainActivity extends Activity { 

    ListView list; 
    List<Integer> users = new ArrayList<Integer>(); 
    List<String> imageId = new ArrayList<String>(); 

    Integer[] userNames; 
    String[] imageUrls; 

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

     users.add(50); 
     imageId.add("https://color.adobe.com/build2.0.0-buildNo/resource/img/kuler/color_wheel_730.png"); 


     userNames = new Integer[users.size()]; 
     userNames = users.toArray(userNames); 

     imageUrls = new String[imageId.size()]; 
     imageUrls = imageId.toArray(imageUrls); 

     CustomList adapter = new 
       CustomList(MainActivity.this, userNames, imageUrls); 


     list=(ListView)findViewById(R.id.listView); 
     list.setAdapter(adapter); 

    } 
} 

這裏是CustomList.java:

public class CustomList extends ArrayAdapter<String> { 

    private final Activity context; 
    private final Integer[] userNames; 
    private final String[] imageUrl; 


    static class ViewHolderItem { 
     TextView textViewItem; 
    } 

    public CustomList(Activity context, 
         Integer[] users, String[] imageUrl) { 
     super(context, R.layout.list_item); 
     this.context = context; 
     this.userNames = users; 
     this.imageUrl = imageUrl; 

    } 

    static class ViewHolder{ 
     TextView userName; 
     ImageView image; 
    } 


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

     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView= inflater.inflate(R.layout.list_item, null, true); 

     ViewHolder holder; 

     if(convertView == null){ 
      convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null); 
      holder = new ViewHolder(); 

      holder.userName = (TextView)convertView.findViewById(R.id.userName); 
      holder.image = (ImageView)convertView.findViewById(R.id.img); 

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


     holder.userName.setText(String.valueOf(userNames[position])); 
     Picasso.with(context).load(imageUrl[position]).resize(1000, 1000).centerInside().into(holder.image); 

     return convertView; 

    } 
} 

這裏是list_item.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <TextView android:id="@+id/userName" android:padding="10dp"/> 

    <ImageView 
     android:id="@+id/img" 
     android:tag="@string/app_name" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:adjustViewBounds="true" 
     android:scaleType="fitCenter" 
     /> 
</TableLayout> 
+0

在日誌中是否有錯誤?它可能是你傳遞給你的Adapter的構造函數的數組是空的。 – ishmaelMakitla

+0

@ishmaelMakitla數組並非空,因爲我在MainActivity.java中添加了項目 –

+0

您可以通過顯示「CustomList」構造函數中每個數組的長度來確認數組是否具有值 - 只顯示用戶和imageUrl數組的長度。另外,只是好奇,你爲什麼使用TableLayout來處理你的list_item XML? – ishmaelMakitla

回答

0

只需在您的CustomList加入這一行.class

@Override 
public int getCount() { 
    return userNames.length; 
} 

此外,我注意到在TextView中沒有寬度和高度。