Android 如何将ListView转换为GridView?

Android 如何将ListView转换为GridView?,android,list,gridview,android-listview,Android,List,Gridview,Android Listview,我创建了一个应用程序,它在listview中显示了一些来自internet的图片的listview。我想在网格视图中显示它。我已经尝试使用基本适配器代替列表适配器!但这不起作用,因为它不能接受arg(arg在代码中) 有人能帮我在gridview中显示这些图像吗 这是我的密码 MainPage.java public class MainPage extends ListActivity { @Override protected void onCreate(Bundle sa

我创建了一个应用程序,它在listview中显示了一些来自internet的图片的
listview
。我想在
网格视图中显示它
。我已经尝试使用基本适配器代替列表适配器!但这不起作用,因为它不能接受arg(arg在代码中)

有人能帮我在
gridview
中显示这些图像吗

这是我的密码

MainPage.java

public class MainPage extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("");

        setContentView(R.   layout.    contacts_list);

        final List<Model> list = new ArrayList<Model>();

        /** This block is for getting the <span id="IL_AD9" class="IL_AD">image url</span> to <span id="IL_AD2" class="IL_AD">download from</span> the server **/
        final GetDataFromDB getvalues = new GetDataFromDB();

        final ProgressDialog dialog = ProgressDialog.show(MainPage.this,
                "", "Gettting values from DB", true);
        final CountDownLatch latch = new CountDownLatch(1);
        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);
                }
                latch.countDown();
            }
        }).start();
        /*************************** GOT data from Server ********************************************/
 try {
    latch.await();
} catch (InterruptedException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
        ArrayAdapter<Model> adapter = new MyCustomArrayAdapter(this, list);
        setListAdapter(adapter);

        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);}
        });
                }


    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);
    }
    @Override
    public void onBackPressed() {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                this);

            // set title
            alertDialogBuilder.setTitle("Exit!");

            // set dialog message
            alertDialogBuilder
                .setMessage("Are you sure you want to leave?")
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        // if this button is clicked, close
                        // current activity
                        MainPage.this.finish();
                    }
                  })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        // if this button is clicked, just close
                        // the dialog box and do nothing
                        dialog.cancel();
                    }
                });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();
    }
        // your code.

}

我也想问点别的,有点离题。。我正在从URL下载图像并显示在gridview中。但它下载了大量数据的巨大图像。我是否可以下载该图像的缩略图以减少数据使用?

相同的代码,但不是扩展listActivity扩展普通活动,而是使用id为foo的GridView或任何您想要的东西来定义xml

GridView foo = (GridView) findViewById(R.id.foo);
ArrayAdapter<Model> adapter = new MyCustomArrayAdapter(this, list);
foo.setAdapter(adapter); 
GridView foo=(GridView)findviewbyd(R.id.foo);
ArrayAdapter=新的MyCustomArrayAdapter(此,列表);
foo.setAdapter(适配器);

你应该使用
GridView
而不是
ListView
。我试过了,但是自定义listadapter不能与xml文件中的GridView一起工作。我找不到它,为什么选民给了他voteDown?你能解释一下为什么吗?他问得很简单,但他只是给了我们很多信息和很多代码,这就是为什么?他给了我们很多,因为他不知道他的坏蛋在哪里,什么都不是!我是新来的。但他给出的解决方案解决了我的问题!这就是为什么我认为我应该感激他!就这些。我还有一个问题!你能在他的回帖上看到吗?请看你是否能帮忙!它说setListAdapter方法对于GridView类型是未定义的哦,对不起,我的坏消息是它而不是setListAdapter“setAdapter”,无论如何,你欢迎hehei,我也想问点别的。有点离题了。。我正在从URL下载图像并显示在gridview中。但它下载了大量数据的巨大图像。有没有我可以下载缩略图到umages以减少数据使用?你做了很多工作,看起来比你大,但我认为这是快速学习的好方法,这是一个问题,没有评论权!但这里是我的答案下载小图片版本从你下载他们如果你从你的服务器下载他们创建小版本的图像在你的服务器上,然后得到他们你安卓应用程序我下载他们从外部服务器不是我的!这些URL将在下一个活动中用于下载高质量的图像,因此我无法提供较小图像的链接!还有其他选择吗?
public class Model {

    private String name;
    private String url;

    public Model(String name, String url) {
        this.name = name;
        this.url = url;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getURL() {
        return url;
    }

    public void setURL(String url) {
        this.url = url;
    }
}
GridView foo = (GridView) findViewById(R.id.foo);
ArrayAdapter<Model> adapter = new MyCustomArrayAdapter(this, list);
foo.setAdapter(adapter);