如何从不同的XML布局文件使用ListView

用户名

我正在使用Android ListView进行操作,但遇到一个问题。我在XML文件installation.xml中创建了一个列表视图,我想在我的Searchdata.java中使用该列表视图所以基本上我想要的是,当我单击searchdata按钮时,将从Web服务中获取数据并解析后将其保存到listview中。当我单击Installation View按钮时,将出现一个新窗口,在那里我可以看到该列表数据。

SearchData.java

public class SearchData extends Activity {
EditText Keyword;
JSONParser jsonparser = new JSONParser();
ListView Datalist;
HorizontalScrollView VideoDatalist;
ArrayList<HashMap<String, String>> DataList;
ArrayList<HashMap<String, String>> VideoDataList;
JSONArray contacts = null;
private ProgressDialog pDialog;
ImageButton searchdata,InstallationView;
String Keyvalue = new String();
private static final String TAG_InnerText = "InnerText";
private static final String TAG_Title = "Title";
private static final String TAG_URL = "URL";
private static final String TAG_VIDEO_URL = "URL";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_data);
        InstallationView=(ImageButton)findViewById(R.id.InstallationView);
        Keyword = (EditText) findViewById(R.id.KeyData);
        Datalist=(ListView)findViewById(R.layout.activity_installation);
        VideoDatalist=(HorizontalScrollView)findViewById(R.id.Horizontallist);
        searchdata=(ImageButton)findViewById(R.id.searchicon);
            String Keyvalue = new String();
        DataList = new ArrayList<HashMap<String, String>>();
        VideoDataList = new ArrayList<HashMap<String, String>>();



        searchdata.setOnClickListener(new View.OnClickListener()   {             
            public void onClick(View v) {

                    new ReadData().execute();                           
            }  
             });



        InstallationView.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v)
            {
                startActivity(new Intent(SearchData.this, Installation.class)); 
            }

            });
    }


    public class ReadData extends AsyncTask<Void, Void, Void>
    {
         @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(SearchData.this);
            pDialog.setMessage("Please wait...");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        protected Void doInBackground(Void... arg0) {

           try{
               Keyvalue=Keyword.getText().toString();

                String Jsonstr = jsonparser.makeHttpRequest("http://10.47.93.26:8080/Search/api/Search/"+Keyvalue);


                try {
                if (Jsonstr != null) {

                    JSONArray    jsonObj = new JSONArray (Jsonstr);

                for (int i = 0; i < jsonObj.length(); i++) {
                            JSONObject c = jsonObj.getJSONObject(i);


                            String name = c.optString(TAG_Title);
                            String url = c.optString(TAG_URL);

                            HashMap<String, String> info = new HashMap<String, String>();


                            if( !name.isEmpty() )
                            {
                            info.put(TAG_Title, name);
                            }
                            else
                            {
                                info.put(TAG_Title,"User Manual");
                            }


                            if(url.contains("youtube"))
                            {

                                info.put(TAG_URL, url);
                                VideoDataList.add(info);

                            }
                            else
                            {

                            info.put(TAG_URL, url);
                            DataList.add(info);
                            }

                        }

                    }   

                    else {
                        Log.e("ServiceHandler", "Couldn't get any data from the url");
                    }
                }
                catch (JSONException e) {
                    e.printStackTrace();
                }
           }
           catch(Exception ex)
           {
               ex.printStackTrace();
           }

   return null;
    }


        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (pDialog.isShowing())
                pDialog.dismiss();

            SimpleAdapter adapter = new SimpleAdapter(
                    SearchData.this, DataList,
                    R.layout.list_item, new String[]
                            {   
                            TAG_Title
                             }, new int[] { 
                            R.id.InnerText });
            Datalist.setAdapter(adapter);

        }
    }
}

Web服务正在运行,并且解析代码正在正确运行。我在发布方法时遇到错误,因此您可以在此方面帮助我。

错误

在此处输入图片说明

湿眶客

onCreate(...)SearchData方法中Activity,以下内容将永远无法工作,并且始终会返回“ null”(因此,您的NullPointerException)...

Datalist=(ListView)findViewById(R.layout.activity_installation);

调用findViewById(...)仅适用于您在调用时已膨胀的UI元素setContentView(...)在这种情况下,您所使用R.layout.activity_search_data的布局文件不包含ListViewID为的ID,R.layout.activity_installation顺便说一句,ID是布局文件的资源ID,而不是UI元素的资源ID。

可以做您需要做的唯一方法是Intent在通话时将您的数据作为额外的使用。

startActivity(new Intent(SearchData.this, Installation.class)); 

...Activity创建安装文件后,它将需要获取数据并创建自己的适配器。

编辑:HashMapSerializable并且可以作为Intent额外的传递HashMap如下传递您的数据列表...

Intent i = new Intent(SearchData.this, Installation.class);
i.putExtra("data_list", DataList);
startActivity(i);

在安装中,Activity您可以使用...

getIntent().getSerializableExtra("data_list");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用事件总线从不同的文件调用方法

来自分类Dev

如何从不同的XML更改ImageView源?

来自分类Dev

如何从不同的布局和类在 android 中实现 AsyncTask?

来自分类Dev

如何从不同的类更改活动布局中的属性?

来自分类Dev

Java:如何从不同的模块读取文件?

来自分类Dev

如何从不同的Java文件刷新Fragment?

来自分类Dev

如何从不同的文件访问所需的模块?

来自分类Dev

如何从不同的 dart 文件添加文本

来自分类Dev

从不同的JS文件使用extjs存储

来自分类Dev

单击时如何在不同的布局文件中显示Android ListView项目

来自分类Dev

如何使用.load()从不同的html文件仅加载特定的div

来自分类Dev

如何使用.load()从不同的html文件仅加载特定的div

来自分类Dev

如何使用master.bat从不同位置执行多个.bat文件?

来自分类Dev

如何从不同的文件夹使用相同的名称解决Octave上的函数重载?

来自分类Dev

如何使用R从不同文件中导出列表元素中去除噪声字符

来自分类Dev

使用.htaccess从不同的文件夹加载文件

来自分类Dev

Android:具有不同项目的Listview的xml布局

来自分类Dev

如何从不同位置加载hibernate.cfg.xml

来自分类Dev

是否可以使用XStream将数据从不同的xml文件加载到一个Java类中?

来自分类Dev

如何从不同目录渲染views.py中的文件?

来自分类常见问题

如何动态地从不同文件导入模块?

来自分类Dev

如何从不同的AngularJS文件中获取变量?

来自分类Dev

如何动态地从不同文件导入模块?

来自分类Dev

如何从不同文件访问rascal.js发布?

来自分类Dev

如何从不同的py文件制作kivy应用

来自分类Dev

集合视图-从不同的文件夹接收图像-如何?

来自分类Dev

scp:如何从不同目录传输文件并保留整个路径

来自分类Dev

如何从不同的git分支检索物理文件?

来自分类Dev

如何从不同的 JS 文件设置一行的状态?

Related 相关文章

  1. 1

    如何使用事件总线从不同的文件调用方法

  2. 2

    如何从不同的XML更改ImageView源?

  3. 3

    如何从不同的布局和类在 android 中实现 AsyncTask?

  4. 4

    如何从不同的类更改活动布局中的属性?

  5. 5

    Java:如何从不同的模块读取文件?

  6. 6

    如何从不同的Java文件刷新Fragment?

  7. 7

    如何从不同的文件访问所需的模块?

  8. 8

    如何从不同的 dart 文件添加文本

  9. 9

    从不同的JS文件使用extjs存储

  10. 10

    单击时如何在不同的布局文件中显示Android ListView项目

  11. 11

    如何使用.load()从不同的html文件仅加载特定的div

  12. 12

    如何使用.load()从不同的html文件仅加载特定的div

  13. 13

    如何使用master.bat从不同位置执行多个.bat文件?

  14. 14

    如何从不同的文件夹使用相同的名称解决Octave上的函数重载?

  15. 15

    如何使用R从不同文件中导出列表元素中去除噪声字符

  16. 16

    使用.htaccess从不同的文件夹加载文件

  17. 17

    Android:具有不同项目的Listview的xml布局

  18. 18

    如何从不同位置加载hibernate.cfg.xml

  19. 19

    是否可以使用XStream将数据从不同的xml文件加载到一个Java类中?

  20. 20

    如何从不同目录渲染views.py中的文件?

  21. 21

    如何动态地从不同文件导入模块?

  22. 22

    如何从不同的AngularJS文件中获取变量?

  23. 23

    如何动态地从不同文件导入模块?

  24. 24

    如何从不同文件访问rascal.js发布?

  25. 25

    如何从不同的py文件制作kivy应用

  26. 26

    集合视图-从不同的文件夹接收图像-如何?

  27. 27

    scp:如何从不同目录传输文件并保留整个路径

  28. 28

    如何从不同的git分支检索物理文件?

  29. 29

    如何从不同的 JS 文件设置一行的状态?

热门标签

归档