我的布局包含ListView
和ImageView
。最初,ImageView
是不可见的。我有一个列表,当单击一个项目时,它通过设置ImageView
并使其可见而且listView不可见来显示该项目的图像,到目前为止一切正常。从那里,onBackPressed()
我想再次看到我的列表视图,我重写onBackPressed()
,使我的图片视图不可见,列表视图可见。但是,当我选择一个项目并看到它的图像然后按回来时,会出现一个空白活动,而不是我的listView。我不想再打电话给活动,我该怎么办? listView有什么问题?我尝试拨打invalidate()
和invalidateViews()
,再次设置适配器,但他们并不担心。
其实我在活动的onResume上填写适配器,这里是代码:
public class MyViewActivity extends Activity{
ListView imageList;
CustomImageListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_list_view);
//initialization of image array list etc
}
@Override
public void onResume(){
super.onResume();
imageList = (ListView) findViewById(R.id.listView);
adapter = new CustomImageListAdapter(this,R.layout.image_item, imageNames);
imageList.setAdapter(adapter);
imageList.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adapter, View view, int i,
long l) {
// TODO Auto-generated method stub
if(imageNames.get(i) != null) {
onImageSelected(i);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.image_list_view, menu);
return true;
}
public void onImageSelected(int position) {
...
}
@Override
public void onBackPressed() {
if (img.getVisibility() == ImageView.VISIBLE){
// img.setVisibility(ImageView.INVISIBLE);
// imageList.invalidateViews();
// imageList.setVisibility(ListView.VISIBLE);
// Here actually I want to use the upper part that I commented, but it didn't work, I have to call the same activity again to see my listview
Intent i = new Intent(MyViewActivity.this, MyViewActivity.class);
startActivity(i);
finish();
}
else {
....
}
return;
}
private class CustomImageListAdapter extends ArrayAdapter<String>{
...
}
答案 0 :(得分:0)
Intent i = new Intent(MyViewActivity.this, MyViewActivity.class);
i.putExtra("currentObjectID",objectID);
startActivity(i);
finish();
你为什么要在同一个活动中穿越?你应该理解意图的使用,如果你想保持同一个活动,只需为currentObjectID
设置一个标志,而不是放置额外的..
答案 1 :(得分:0)
只要我能猜到,问题就是由
引起的img.setVisibility(ImageView.INVISIBLE);
您可以尝试使用View.GONE
。
差异在android api的doc中明确说明,我引用了:
/** * This view is invisible, but it still takes up space for layout purposes. */ public static final int INVISIBLE = 0x00000004; /** * This view is invisible, and it doesn't take any space for layout */ public static final int GONE = 0x00000008;
顺便说一下,我会建议使用片段来完成你的工作。具体地,片段A用于呈现列表视图,并且当单击项目时,切换到包含内容的片段B.按下Back
时,只需让后台工作就可以了。