【问题标题】:Make a custom ListView with List<String> in Android在 Android 中使用 List<String> 制作自定义 ListView
【发布时间】:2014-01-09 16:35:56
【问题描述】:

我已经尝试过了,但它不起作用,我想让列表(origen、destino、dias)中的每一个都是我的自定义 ListView 的每一列。 我在其他论坛上问过,但我根本不明白答案,因为我认为当我问的时候他们不理解我。 提前致谢。

MainActiviy.java

public class MainActivity extends Activity {

private ListView lvhorario;
private String url="some web";
public List<String> origen;
private List<String> destino;
private List<String> dias;

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

    //Vincular textviews a utilizar
    lvhorario=(ListView)findViewById(R.id.lvHorario);

    //Crear un nuevo hilo
    new Thread(new Runnable() {
        public void run() {
            Document doc;
            try {            
                // necesitará protocolo http
                doc = Jsoup.connect(url)    
                        .get();      

                origen = new ArrayList<String>();
                for( Element element : doc.select("li.columnaParadaOrigen") )
                {
                    origen.add(element.text());
                }
                destino = new ArrayList<String>();
                for( Element element : doc.select("li.columnaParadaDestino") )
                {
                    destino.add(element.text());
                }
                dias = new ArrayList<String>();
                for( Element element : doc.select("li.columnaDias") )
                {
                    dias.add(element.text());
                }

            } catch (IOException e) {
                e.printStackTrace();
            }            
            //Mostrar los resultados.
            runOnUiThread(new Runnable() {
                public void run() {

                  HorarioAdapter adapter;
                  adapter = new HorarioAdapter(MainActivity.this, origen,destino,dias);
                  lvhorario.setAdapter(adapter);
                }
            });
        }
    }).start();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

HorarioAdapter.java

public class HorarioAdapter extends BaseAdapter{

private List<String> column1, column2,column3;
private Context context;


public HorarioAdapter(Context context,List<String> column1,List<String> column2,List<String>column3){
    this.context=context;
    this.column1 = column1;
    this.column2 = column2;
    this.column3 = column3;

}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    LayoutInflater inflater = LayoutInflater.from(context);
    View item = inflater.inflate(R.layout.horario_row, null);
    TextView origen = (TextView) item.findViewById(R.id.tvorigen);
    origen.setText(column1.get(position).toString());
    TextView destino = (TextView) item.findViewById(R.id.tvdestino);
    destino.setText(column2.get(position).toString());
    TextView dias = (TextView) item.findViewById(R.id.tvdias);
    dias.setText(column3.get(position).toString());

    return item;
}

}

【问题讨论】:

  • 你说它不起作用是什么意思?你有什么错误吗?
  • 你不必重写 getCount 方法,删除它。同时删除getItem,getItemId你不需要它们

标签: java android listview android-custom-view


【解决方案1】:

在适配器的 get count 方法中传递任何列表大小。如果为零,您的列表将不会填充:-

    @Override
public int getCount() {
    // TODO Auto-generated method stub
    return list.size(); // your list
}

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多