应该如何实现? Activity / ActivityGroup或ViewFlipper?

时间:2010-09-26 11:36:00

标签: android

我有一个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); 

我不想为每个细节开始一个活动。

如果问题不清楚,请告诉我,并提前致谢!

1 个答案:

答案 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);