Raf*_*uez 8 java android android-arrayadapter android-listview
我想我变得疯了.如此简单的东西将自定义适配器绑定到Listview让我头疼.
发布代码然后解释:
MainActivity.java
package com.example.pruebalist;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
private static String[] data = new String[] {"0","1","2","3"};
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.v("MainActivity","Inside MainActivity");
setContentView(R.layout.main);
ListView lstView = (ListView)findViewById(R.id.listNoticias);
ArrayAdapter<String> adapter = new LstAdapter(this, R.layout.row, data);
lstView.setAdapter(adapter);
}
}
Run Code Online (Sandbox Code Playgroud)
LstAdapter.java
package com.example.pruebalist;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class LstAdapter extends ArrayAdapter<String>{
private String[] mData;
private Context mContext;
int layoutResourceId;
public LstAdapter(Context context, int textViewResourceId, String[] values) {
super(context, textViewResourceId, values);
mContext = context;
mData = values;
layoutResourceId = textViewResourceId;
Log.v("LstAdapter","Inside LstAdapter");
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
Log.v("LstAdapter","Inside getView");
if(v==null){
LayoutInflater inflater = ((Activity)mContext).getLayoutInflater();
v = inflater.inflate(layoutResourceId, parent,false);
}
String item = mData[position];
if(item!=null){
TextView txtItem = (TextView)v.findViewById(R.id.texto);
if(txtItem!=null){
txtItem.setText(item);
}
}
return v;
}
}
Run Code Online (Sandbox Code Playgroud)
ListView永远不会显示.并且从不使用getView,logCat不显示"Inside Getview".
怎么了?
raj*_*ara 28
主要问题是
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
Run Code Online (Sandbox Code Playgroud)
改为
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.length;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return mData[arg0];
}
Run Code Online (Sandbox Code Playgroud)
查看列表视图和列表活动的 Vogella 教程,尝试ViewHolder在列表适配器中使用它将提高您的视图性能.
And*_*Res 10
这是因为您保留了getCount()返回0 的方法的默认实现,因此适配器认为没有要显示的元素ListView.
它应该回来 mData.length
@Override
public int getCount() {
return mData.length;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13673 次 |
| 最近记录: |