单击列表视图项,在新活动中打开图像



这是我的代码,我想去一个新的活动,当我点击一个列表视图项目。它应该在AsyncTask中打开带有图片下载的新活动。我到目前为止都是这么做的。但是它给出了一个FC。有人能帮忙吗?

    public class     MainPage    extends ListActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.   layout.    contacts_list);
            final List<Model> list = new ArrayList<Model>();
            /** This block is for getting the image url to download from the server **/
            final GetDataFromDB getvalues = new GetDataFromDB();
            final ProgressDialog dialog = ProgressDialog.show(MainPage.this,
                    "", "Gettting values from DB", true);
            new    Thread   (new Runnable() {
                public void run() {
                    String response = getvalues.getImageURLAndDesciptionFromDB();
                    System.out.println("Response : " + response);
                    dismissDialog(dialog);
                    if (!response.equalsIgnoreCase("")) {
                        if (!response.equalsIgnoreCase("error")) {
                            dismissDialog(dialog);
                            // Got the response, now split it to get the image Urls and description
                            String all[] = response.split("##"); 
                            for(int k = 0; k < all.length; k++){
                                String urls_and_desc[] = all[k].split(","); //  urls_and_desc[0] contains image url and [1] -> description.
                                list.add(get(urls_and_desc[1],urls_and_desc[0]));
                            }
                        }
                    } else {
                        dismissDialog(dialog);
                    }
                }
            }).start();
            /*************************** GOT data from Server ********************************************/
            ArrayAdapter<Model> adapter = new MyCustomArrayAdapter(this, list);
            setListAdapter(adapter);
ListView lv = getListView();
//setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
         Intent intent = new Intent(MainPage.this, ViewImage.class);
             //Get the value of the item you clicked
            Model model = list.get(position);
                 intent.putExtra("image", model.getURL());
            startActivity(intent);}
});
        }
        public void dismissDialog(final ProgressDialog dialog){
            runOnUiThread(new Runnable() {
                public void run() {
                    dialog.dismiss();
                }
            });
        }
        private Model get(String s, String url) {
            return new Model(s, url);
        }
    }

这是我的布局文件contact_list

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_margin="0dp" >
  <ListView
            android:id="@id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="00dp"
            android:dividerHeight="4dp"
            android:cacheColorHint="#0000"
            android:clipToPadding="true"
            android:layout_margin="00dp"
            android:soundEffectsEnabled="true"
            android:scrollbars="none"
            android:divider="#81F79F"
            android:layout_weight="1">
    </ListView>
</LinearLayout>

我的新活动的代码,将显示图像再次下载它从url而不调整它的大小!

public class ViewImage extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_image);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.view_image, menu);
        String country = getIntent().getStringExtra("image");
        return true;
    }

编辑:我使用setContentView()两次!我现在已经解决了这个问题!现在唯一的问题是我怎么能通过我的PHP文件的url到新的活动下载和显示图像与全分辨率不调整大小!

编辑:我已经在MainPage.java中为setonitemlistener()添加了这个

 ListView lv = getListView();
        lv.setOnItemClickListener(new OnItemClickListener()
        {
            @Override 
            public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
            { 
                 Intent intent = new Intent(MainPage.this, ViewImage.class);
                     Model model = list.get(position);
                     String myURL = model.getURL();
                     intent.putExtra("image", myURL);
                    startActivity(intent);}
        });

和在新的活动ViewImage.java

final String image = getIntent().getStringExtra("image");
        TextView tv=(TextView)findViewById(R.id.textView1);
        tv.setText(image);
        final AQuery aq=new AQuery(this);
        aq.id(R.id.imageView1).image(image, true, true, 200, 0);

现在它的工作,但只有它下载图像在新的活动(ViewImage.java)在listview的第一项。虽然它在listview上下载图像谁来帮我?

我建议你将图像的url传递给你的downloaddimage活动,然后在你的活动中重新获取图像。最好使用像Nostra这样的ImageLoader来使用缓存,而不是从url加载。这只是我的建议。这是你的选择。干杯!

try this,

lv.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
         Intent intent = new Intent(MainPage.this, ViewImage.class);
             Model model = list.get(position);
             intent.putExtra("image", model.geturl());
            startActivity(intent);}
});
    Clear How you get Image Url Fisrt If it Come From medel.getUrl() with respective postion of 
    list view accrding to erlier solution of regrading your problem Then on list view click 
    First get Url From model and put it into bundel like this as below menthion
    MainPage.java
    lv.setOnItemClickListener(new OnItemClickListener()
    {
        @Override 
        public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
        { 
             Intent intent = new Intent(MainPage.this, ViewImage.class);
             Model model = list.get(position);
             intent.putExtra("imageUrl", model.geturl());
             startActivity(intent);
       }
    });
ViewImage.java
protected void onCreate(Bundle savedInstanceState)
{
     super.onCreate(savedInstanceState);
     setContentView(R.layout.xmlview);
     new MyTask().execute();

}
Do background Method of MyTask
@Override
protected Void doInBackground(Void... arg0)
{
    try
    {
     String urlstr = getIntent().getExtras().getString("imageUrl");
     URL url = new URL(urlstr);
     bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
     imageview.setImageBitmap(bmp);
    } 
     catch(Exception e)
     {
       e.printStackTrace();
     }
       return null;
}

最新更新