我有一个ListView,让我们说5个项目。当我点击其中一个时,它会根据我的ListView的位置自动开始一个新的活动。
然后,在新活动中,它显示为“1/5”。
我有两个按钮(后面和下一个)来显示5个中的2个等,但是我应该如何实现,因此它加载新内容而不会为每个“2 of 5”,“3 of 5”等启动大量活动。 。?它意味着以这种方式完成,因此用户无需返回ListView,然后选择第二个位置..
我当前的代码(来自ListView):
OnItemClickListener itemListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long rowid) {
Intent intent = new Intent().setClass(ctx, Details.class);
Bundle b = new Bundle();
b.putInt("id", parent.getPositionForView(v));
intent.putExtras(b);
startActivity(intent);
}
};
然后是Details.java中的一段代码:
next = (Button)findViewById(R.id.next_button);
back = (Button)findViewById(R.id.back_button);
Bundle b = getIntent().getExtras();
id = b.getInt("id");
id_header_sum = id+1;
String string_id = Integer.toString(id_header_sum);
one_of_all.setText(string_id + " of 5");
nextOnClick = new OnClickListener() {
public void onClick(View arg0) {
if(id_header_sum==30){
}
else {
}
}
};
backOnClick = new OnClickListener() {
public void onClick(View arg0) {
if(id_header_sum==1){
}
else {
}
}
};
next.setOnClickListener(nextOnClick);
back.setOnClickListener(backOnClick);
我不想为每个细节开始一个活动。
如果问题不清楚,请告诉我,并提前致谢!
答案 0 :(得分:1)
您可以尝试使用Application类。
需要的人的基础课程 维护全球申请状态。
您可以在此处保留元素列表。 例如:
// Be careful, the name of this class must be
// placed in the / said in your manifest
// <manifest xmlns:android="http://schemas.android.com/apk/res/android"
// package="com.something.appname"
// and be called as the manifest says
// <application android:name="YourAppName"
public class YourAppName extends Application {
private List<Item> mItems;
@Override
public void onCreate() {
super.onCreate();
mItems = getYourItemList();
}
public List<Item> getItems() {
return mItems;
}
}
没有什么花哨的。只是列表的吸气剂。
详细活动可以是这样的:
public class DetailActivity extends Activity {
private YourAppName mApp;
private ImageButton mNextButton;
private ImageButton mBackButton;
private TextView mTitle;
private int mIndex;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
mApp = (YourAppName) getApplication();
/*This index should come from the intent */
mIndex = 2;
getWidgets();
populateWidgets();
}
private void getWidgets() {
mNextButton = (ImageButton)findViewById(R.id.next);
mTitle = (TextView)findViewById(R.id.title);
/* other findViewById */
mNextButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mIndex++; /*Notice that this will get a NPE.
You need to place a better logic here */
populateWidgets();
}
});
}
private void populateWidgets() {
Item item = mApp.getItemList().get(mItem);
mTitle.setText(item.getName());
}
}
有关您的代码的一些评论:
Intent intent = new Intent().setClass(ctx, Details.class);
看起来很奇怪。常见的方法是Intent intent = new Intent(ctx, Details.class);