Java 从微调器中选择项目时刷新TableView项目,而不仅仅是将其合并

Java 从微调器中选择项目时刷新TableView项目,而不仅仅是将其合并,java,android,Java,Android,我在tableView中显示JSON结果时遇到了一个问题,在插入获取的数据之前没有清除tablerows,而是将新数据与旧数据关联起来,我不知道为什么。这是我的密码: 首先,我有一个JSON解析器,它根据选定的城市和日期获取所有信息,我认为没有必要显示这一部分,但我只是将数据添加到列表数组中,然后执行这一部分 public void showinfo(){ // Get the TableLayout TableLayout tl = (TableLayout) findView

我在tableView中显示JSON结果时遇到了一个问题,在插入获取的数据之前没有清除tablerows,而是将新数据与旧数据关联起来,我不知道为什么。这是我的密码:

首先,我有一个JSON解析器,它根据选定的城市和日期获取所有信息,我认为没有必要显示这一部分,但我只是将数据添加到列表数组中,然后执行这一部分

public void showinfo(){
    // Get the TableLayout
    TableLayout tl = (TableLayout) findViewById(R.id.maintable);
    tl.removeAllViews();

    Log.v(KahelTag, "eventsCleared");

    // Go through each item in the array
    for (int current = 0; current < infoID.size(); current++)
    {

        TableRow tr = new TableRow(this);
        tr.setId(100+current);
        tr.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));   

       //CREATE TEXT VIEW FOR INFO1
        final TextView info1 = new TextView(this);
        clubName.setId(200+current);
        clubName.setText(info1.get(current));
        clubName.setTextColor(Color.WHITE);
        clubName.setTextSize(12);
        clubName.setTypeface(null, Typeface.BOLD);
        clubName.setTag(infoID.get(current));
        clubName.setGravity(Gravity.CENTER_VERTICAL);
        clubName.setLayoutParams(new LayoutParams(
                (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65, getResources().getDisplayMetrics()),
                LayoutParams.WRAP_CONTENT));
        tr.addView(info1);

        //CREATE TEXT VIEW FOR info2
        TextView info2 = new TextView(this);
        eventName.setId(current);
        eventName.setText(info2.get(current));
        eventName.setGravity(Gravity.CENTER_VERTICAL);
        eventName.setTextSize(12);
        eventName.setTextColor(Color.WHITE);
        eventName.setLayoutParams(new LayoutParams(
                (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 120, getResources().getDisplayMetrics()),
                LayoutParams.WRAP_CONTENT));
        tr.addView(info2);

      //CREATE TEXT VIEW FOR INFO3
        TextView info3 = new TextView(this);
        eventDate.setId(current);
        eventDate.setText(info3.get(current));
        eventDate.setGravity(Gravity.CENTER_VERTICAL);
        eventDate.setTextSize(12);
        eventDate.setTextColor(Color.WHITE);
        eventDate.setLayoutParams(new LayoutParams(
                (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics()),
                LayoutParams.WRAP_CONTENT));
        tr.addView(info3);

        // Add the TableRow to the TableLayout
        tl.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));


    }
}
public void showinfo(){
//获取表格布局
TableLayout tl=(TableLayout)findviewbyd(R.id.maintable);
tl.删除所有视图();
Log.v(KahelTag,“事件精选”);
//检查数组中的每个项目
对于(int current=0;current
现在,我在使用showinfo()设置内容视图后显示该信息; 现在是旋转器部分。它只需再次调用JSON代码来更改参数,然后再次在表中显示信息。但它并没有像我想的那样工作,因为正如我上面所说的,它只是包含了数据。顺便说一下,我有两个参数是为我的JSON文本传递的。以下是微调器的代码:

    Spinner spinParam1 = (Spinner) findViewById(R.id.spinner1);
    Spinner spinParam2 = (Spinner) findViewById(R.id.spinner2);


    spinParam1.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            Object specify_param1 = parentView.getItemAtPosition(position);
            if(specify_param1.toString() != "All"){
                getEvents(specify_param1.toString(),null);
                showinfo();
                Log.v(KahelTag, "showinfo");
            }
            else
            {
                getEvents(null,null);
                showinfo();
                Log.v(KahelTag, "elseshowinfo");
            }
        }
        public void onNothingSelected(AdapterView<?> parentView) {
            getEvents(null,null);
            showinfo();
            Log.v(KahelTag, "nothingshowinfo");
        }

    });

    spinParam2.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            Object specify_param2 = parentView.getItemAtPosition(position);
            if(specify_param2.toString() != "Any"){
                getEvents(specify_param2.toString(),null);
                showinfo();
                Log.v(KahelTag, "showinfo");
            }
            else
            {
                getEvents(null,null);
                showinfo();
                Log.v(KahelTag, "elseshowinfo");
            }
        }

        public void onNothingSelected(AdapterView<?> parentView) {
            getEvents(null,null);
            showinfo();
            Log.v(KahelTag, "nothingshowinfo");
        }

    });
Spinner spinParam1=(Spinner)findViewById(R.id.spinner1);
Spinner spinParam2=(Spinner)findViewById(R.id.spinner2);
spinParam1.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图selectedItemView、整型位置、长id){
对象指定_param1=parentView.getItemAtPosition(位置);
如果(指定_param1.toString()!=“全部”){
getEvents(指定_param1.toString(),null);
showinfo();
Log.v(KahelTag,“showinfo”);
}
其他的
{
getEvents(null,null);
showinfo();
Log.v(KahelTag,“elseshowinfo”);
}
}
未选择公共无效(AdapterView父视图){
getEvents(null,null);
showinfo();
Log.v(KahelTag,“nothingshowinfo”);
}
});
spinParam2.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图selectedItemView、整型位置、长id){
对象指定_param2=parentView.getItemAtPosition(位置);
如果(指定_param2.toString()!=“任意”){
getEvents(指定_param2.toString(),null);
showinfo();
Log.v(KahelTag,“showinfo”);
}
其他的
{
getEvents(null,null);
showinfo();
Log.v(KahelTag,“elseshowinfo”);
}
}
未选择公共无效(AdapterView父视图){
getEvents(null,null);
showinfo();
Log.v(KahelTag,“nothingshowinfo”);
}
});

我需要做什么修改才能让它按我想要的方式工作?谢谢

如果你这样做,我会这么做

tl = new TableLayout();

但是为什么不使用带有自定义适配器的listview呢,它听起来更像您需要的。然后您不需要创建x100 tablerows等。

没有注意到这一点,但问题的主要原因是JSON字符串数组,我在其中存储所有数据,这就是它将以前输出的数据连接在一起的原因。通过在解析JSON字符串之前先清除数组解决了此问题。:)

我更喜欢表格,因为它比listview更容易自定义,而且在我的布局中应用它也很容易。无论如何,我没有得到tl=newtablelayout()的部分;。正如您所看到的,我的表格布局已经设置好,我只想清除表格中的行,但它没有按我预期的方式工作。:)A.