2017-08-07 144 views
1

当列表中没有项目时,不显示空白视图。问题是什么?自定义ListVIew未显示空白屏幕正在显示

Main_Activity

包com.example.android.customadapter;

public class MainActivity extends AppCompatActivity { 

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


     ArrayList<Players> objects = new ArrayList<>(); 


     objects.add(new Players("Shikhar Dhawan",R.drawable.shikhar)); 
     objects.add(new Players("Virat Kohli",R.drawable.kohli)); 

    } 
} 

我的模型类

Players.java

包com.example.android.customadapter;

public class Players { 

    private String mName; 
    private int image; 


    Players(String name,int res) 
    { 
     mName = name; 
     image = res; 
    } 

    public String getName() 
    { 
     return mName; 
    } 

    public int getImage() 
    { 
     return image; 
    } 
} 

CustomAdapter类

包com.example.android.customadapter;从activity_main.xml中

我的自定义数组列表适配器

public class CustomAdapter extends ArrayAdapter<Players> { 

    public CustomAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull ArrayList<Players> objects) { 
     super(context, resource, objects); 
    } 


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

     View v = convertView; 
     if(v==null) 
     { 
      v = LayoutInflater.from(getContext()).inflate(R.layout.list_item,parent,false); 
     } 

     Players p = getItem(position); 

     TextView t = (TextView)v.findViewById(R.id.miwok_text_view); 

     t.setText(p.getName()); 

     ImageView i = (ImageView)v.findViewById(R.id.image); 

     i.setImageResource(p.getImage()); 


     return v; 
    } 

} 
+0

你没有初始化在OnCreate中的列表视图,并没有设置适配器给它 –

+0

奥莱娜Ÿ感谢回答,但我怎么能做到这一点 –

+0

'CustomAdapter customAdapter =新CustomAdapter(本,字); ListView lv =(ListView)findViewById(R.id.list); lv.setAdapter(customAdapter);' –

回答

0

您正在接收错误,因为您没有从班级中获取值。 下面是代码,我使用

@NonNull 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view =convertView; 
    LayoutInflater layoutInflater = LayoutInflater.from(getContext()); 
    if (convertView==null){ 
     view=layoutInflater.inflate(R.layout.customplaylist,parent,false); 
    } 
    Playlistfileinfo playlistfileinfo =(Playlistfileinfo)getItem(position); 
    TextView textView =(TextView)view.findViewById(R.id.textView7); 
    textView.setTypeface(typeface); 
    textView.setText(playlistfileinfo.getName()); 
    return view; 
} 

你可以看到,Playlistfileinfo playlistfileinfo =(Playlistfileinfo)getItem(position);希望这可以帮助你。

+0

谢谢大家,我已经理解了这个问题并解决了它 –

+0

那么错误是什么? – SAVVY

+0

我忘记在onCreate方法中初始化列表视图,并将阵列适配器设置为listview –

0

我已经在main_activity init的ArrayList的末尾解决了它。在OnCreate方法中的列表视图并将阵列适配器设置为列表视图

CustomAdapter adapter = new CustomAdapter(this,words);

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

    listView.setAdapter(adapter);