我在TabHost中使用ListActivity时遇到了一些问题。我只想使用一个类来显示不同的列表(我管理的),但问题是当我点击新选项卡时,列表不会更新/填充。我找到了一种方法来解决它,那就是创建重复的类(Listclass1.java,Listclass2.java ......)。真的不是很好的编码练习。
以下是我的一些tabhost代码:
intent = new Intent().setClass(this, ListCreator.class);
intent.putExtra("NAME", "abilities");
this.addTab("", R.drawable.abilities, intent);
intent = new Intent().setClass(this, ListCreator.class);
intent.putExtra("NAME", "map");
this.addTab("", R.drawable.map_rules, intent);
这是Listclass:
package no.heroclix.rules;
import heroclix.Rules.R;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class ListCreator extends ListActivity {
private String NAME;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
NAME = getIntent().getExtras().getString("NAME");
Log.d("List", NAME);
final String[] rules;
if(NAME.equals("abilities")) rules = getResources().getStringArray(R.array.abilities_names);
else if(NAME.equals("map")) rules = getResources().getStringArray(R.array.map_rules_names);
else if(NAME.equals("objects")) rules = getResources().getStringArray(R.array.objects_names);
else if(NAME.equals("ata")) rules = getResources().getStringArray(R.array.ata_names);
else if(NAME.equals("feats")) rules = getResources().getStringArray(R.array.feats_names);
else rules = getResources().getStringArray(R.array.bfc_names);
setListAdapter(new ArrayAdapter<String>(this, R.layout.listrow, rules));
ListView lw = getListView();
lw.setTextFilterEnabled(true);
lw.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int position,
long id) {
Intent myIntent = new Intent(getApplicationContext(), ListInfo.class);
myIntent.putExtra("NAME", NAME);
myIntent.putExtra("POSITION", position);
myIntent.putExtra("SIZE", rules.length);
startActivityForResult(myIntent, 0);
}
});
}
}
任何线索?
编辑:我应该提到这种情况有一段时间了(不使用重复的类),但是在我做了一些更改后(我已经删除了)它不再起作用了。
答案 0 :(得分:0)
如果我理解正确,您实际上并不需要扩展ListActivity,并且您尝试执行类似Is it realizable on Android?
的部分操作答案 1 :(得分:0)
TabHost.OnTabChangeListener怎么样?
“选项卡更改时要调用的回调的接口定义”。您可以使用它在切换标签时更新标签。