Java 使用带有自定义类的setadapter的nullpointerexception

Java 使用带有自定义类的setadapter的nullpointerexception,java,android,nullpointerexception,Java,Android,Nullpointerexception,我试图显示imageview和textview的组合,但在实际显示数据时不断出错 我试图从用户那里获取输入以搜索一些东西,然后运行一些后台方法来提取数据。然后,我将有两个充满数据的数组,然后创建Item对象并将其传递给我的自定义适配器类 我正试图利用方形毕加索从URL加载一些图像。我认为这可能是问题所在,但错误表明它来自setadapter 很抱歉发布了这么多代码 这是我的MainActivity.java public class MainActivity extends ActionBarA

我试图显示imageview和textview的组合,但在实际显示数据时不断出错

我试图从用户那里获取输入以搜索一些东西,然后运行一些后台方法来提取数据。然后,我将有两个充满数据的数组,然后创建Item对象并将其传递给我的自定义适配器类

我正试图利用方形毕加索从URL加载一些图像。我认为这可能是问题所在,但错误表明它来自setadapter

很抱歉发布了这么多代码

这是我的MainActivity.java

public class MainActivity extends ActionBarActivity {

    String url = "https://www.google.com/search?hl=en&tbm=shop&q=";
    ProgressDialog mProgressDialog;
    float x1,x2;
    float y1, y2;
    ImageButton button;
    int buttonPressed = 0;
    private ListView listView1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (ImageButton) findViewById(R.id.search_button);
        button.setOnClickListener(new OnClickListener()
        {
            public void onClick(View arg0)
            {
                new Search().execute();
            }
        });


    }

    private class Search extends AsyncTask<Void, Void, Void> {
        String title = "blah";
        String prices[] = new String[10];
        String description[] = new String[10];
        String stores[] = new String[10];
        String full[] = new String[10]; // change this 40
        String linksContainer[] = new String[10];
        String imgContainer[] = new String[10];
        @Override

        protected void onPreExecute() {
            super.onPreExecute();
            mProgressDialog = new ProgressDialog(MainActivity.this);
            mProgressDialog.setTitle("Salert");
            mProgressDialog.setMessage("Searching...");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {
                EditText edit =  (EditText) findViewById(R.id.search_field);
                String search = edit.getText().toString().replaceAll("\\s","\\+");



                // Connect to the web site
                Document document = Jsoup.connect(url+search).get();
                // Get the html document title
                Elements stuff = document.select("div[class=psgicont]"); 
                Iterator<Element> iter = stuff.iterator();
                Element temp;
                //String str = "";
                //int index, index2;
                Elements links = document.select("a[class=psgiimg]");
                Iterator<Element> iterImage = links.iterator();
                Element tempImage;


                for(int i = 0; i < 10; i++) // change this to 40
                {
                    temp = iter.next();
                    full[i] = temp.text();
                    /*

                    index = str.indexOf('$');
                    index2 = str.indexOf("from");
                    description[i] = str.substring(0, index - 1);
                    prices[i] = str.substring(index,index2 - 1);
                    stores[i] = str.substring(index2 + 5, str.length());

                    full[i] = description[i] + "\n" + prices[i] + " from " + stores[i];
                    */
                }
                for(int j=0; j < 10; j++)
                {
                    tempImage = iterImage.next();
                    linksContainer[j] = tempImage.attr("abs:href");
                    //Log.d("message", linksContainer[j]);
                }

                for (int k=0; k < 10; k++)
                { 
                    String url = linksContainer[k];
                    Document document2 = Jsoup.connect(url).get();
                    Elements link = document2.select("div[id=pp-altimg-init-main] > img");
                    imgContainer[k] = link.attr("src");
                    Log.d("img link", imgContainer[k]);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) 
        {
            /*
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
                    R.layout.list_view, R.id.label, full);

            ListView listView = (ListView) findViewById(R.id.list);
            listView.setAdapter(adapter);*/

            Item item_data[] = new Item[]
            {
                new Item(imgContainer[0], full[0]),
                new Item(imgContainer[1], full[1]),
                new Item(imgContainer[2], full[2]),
                new Item(imgContainer[3], full[3]),
                new Item(imgContainer[4], full[4]),
                new Item(imgContainer[5], full[5]),
                new Item(imgContainer[6], full[6]),
                new Item(imgContainer[7], full[7]),
                new Item(imgContainer[8], full[8]),
                new Item(imgContainer[9], full[9])
            };

            ItemAdapter adapter = new ItemAdapter(MainActivity.this, R.layout.list_view, item_data);

            listView1 = (ListView)findViewById(R.id.listView1);

            listView1.setAdapter(adapter);

            mProgressDialog.dismiss();
            buttonPressed ++;
        }

    }

}
这是我的列表_view.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:background="#303541"
    android:id="@+id/listView1">

 <ImageView android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
  />


<TextView android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

  <Button android:text="@string/add"
          android:id="@+id/addButton"
          android:layout_marginTop="2dip"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:onClick="addItemHandler"
          android:gravity="right" />

</ListView>

更新问题可能来自ItemAdapter类中的picasso.withcontext行。这就是我实际显示url图像的地方。

在活动xml中,您声明了一个id为android:id=@+id/list的ListView,但在AsyncTask中,您正在查找listView1=ListViewfindViewByIdR.id.listView1;您正在将其用作行_item.xml的根。我猜你想改变

listView1=ListViewfindViewByIdR.id.listView1

listView1=ListViewfindViewByIdR.id.list


并去掉list_view.xml中的ListView,添加了logcat。上面的几行仅仅是获取数据的后台执行。@JeffNguyen MainActivity.java?listView1.setAdapteradapter中的第174行是什么;我从未见过在列表中包含子对象的列表视图xml@JeffNguyenlistview1为空。有子元素的listview?是的,我试过更改那一行的id。如果我没有列出,它会给我错误LinearLayout无法转换为android.widget.ImageView为什么要将LinearLayout转换为ImageView?摆脱getView中的强制转换,使用膨胀视图检索itI中的项目我这样做是因为在我的ItemAdapter类中-我使用Picasso.withcontext的行中。。。原始视图有问题-因此我使用ImageView。我将上面的ItemAdapter.is Picasso.更新为需要ImageView?然后他应该在支架内添加ImageView,而不是提供行,他应该传递holderInstance.ImageView@拉古南丹:谢谢你的纪录片
package com.example.salert;

public class Item{
    public String url;
    public String description;
    public Item(){
        super();
    }

    public Item(String url, String description){
        super();
        this.url = url;
        this.description = description;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:background="#303541"
    android:id="@+id/listView1">

 <ImageView android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
  />


<TextView android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

  <Button android:text="@string/add"
          android:id="@+id/addButton"
          android:layout_marginTop="2dip"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:onClick="addItemHandler"
          android:gravity="right" />

</ListView>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.bigbang.salertapp.MainActivity" 
    android:background ="@drawable/logo" >

           <EditText
            android:id="@+id/search_field"
            android:layout_alignParentLeft="true"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:paddingLeft="12dp"
            android:singleLine="true"
            android:textColor="#737373"
            android:background="@drawable/search"
            android:hint="@string/search" 
            />

       <ImageButton android:id="@+id/search_button"
                android:layout_width="20dip" 
                android:layout_height="20dip"
                android:layout_marginRight="12dip"
                android:layout_marginTop="2dip"
                android:layout_alignRight="@+id/search_field"
                android:layout_alignTop="@+id/search_field"
                android:layout_alignParentRight="true"
                android:contentDescription="@string/searchbuttonCD"
                android:background="@drawable/sbicon1"
            />

    <ListView 
     android:layout_marginTop="2dip"
     android:id="@+id/list"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_below="@id/search_field" 
     android:background="#303541"/> 



</RelativeLayout>
07-24 02:41:21.014: W/dalvikvm(6505): threadid=1: thread exiting with uncaught exception (group=0x413e2438)
07-24 02:41:21.024: E/AndroidRuntime(6505): FATAL EXCEPTION: main
07-24 02:41:21.024: E/AndroidRuntime(6505): java.lang.NullPointerException
07-24 02:41:21.024: E/AndroidRuntime(6505):     at com.example.salert.MainActivity$Search.onPostExecute(MainActivity.java:174)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at com.example.salert.MainActivity$Search.onPostExecute(MainActivity.java:1)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at android.os.AsyncTask.finish(AsyncTask.java:631)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at android.os.Looper.loop(Looper.java:137)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at android.app.ActivityThread.main(ActivityThread.java:4905)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at java.lang.reflect.Method.invokeNative(Native Method)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at java.lang.reflect.Method.invoke(Method.java:511)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-24 02:41:21.024: E/AndroidRuntime(6505):     at dalvik.system.NativeStart.main(Native Method)