Android parse.com listView崩溃

时间:2016-11-24 17:33:51

标签: android listview android-studio

我正在尝试创建这个具有listView的应用程序,当我点击listView中的某个项目时,它会显示有关所点击项目的更多信息。我不知道如何解决这个问题。我从我的日志中获得以下内容

   java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
                                                                                        at com.example.velvetdev01.parselistclick.MainActivity$1.onItemClick(MainActivity.java:50)
                                                                                        at android.widget.AdapterView.performItemClick(AdapterView.java:310)

这是我的代码

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.parse.ParseObject;
import com.parse.ParseQueryAdapter;

import java.util.List;

//import android.widget.ArrayAdapter;


public class MainActivity extends Activity {


private CustomAdapter urgentTodosAdapter;
private ParseQueryAdapter<ParseObject> mainAdapter;
private ListView listView;
List<ParseObject> object;

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

    mainAdapter = new ParseQueryAdapter<ParseObject>(this, "RestaurantDetail");
    urgentTodosAdapter = new CustomAdapter(this);
    listView = (ListView) findViewById(R.id.listView1);

    listView.setAdapter(urgentTodosAdapter);
    urgentTodosAdapter.loadObjects();


    // Binds the Adapter to the ListView
    listView.setAdapter(urgentTodosAdapter);
    // Capture button clicks on ListView items
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            // Send single item click data to SingleItemView Class
            Intent intent = new Intent(MainActivity.this, SingleItemView.class);
            // Pass data "name" followed by the position
            intent.putExtra("Name", object.get(i).getString("Name"));
            // Open SingleItemView.java Activity
            startActivity(intent);
        }
    });
}

}

和我的自定义适配器

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.parse.ParseFile;
import com.parse.ParseImageView;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseQueryAdapter;


public class CustomAdapter extends ParseQueryAdapter<ParseObject> {

public CustomAdapter(Context context) {

    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() {

        public ParseQuery create() {
            ParseQuery query = new ParseQuery("RestaurantDetail");

 /* query.whereEqualTo("Name", true);*/

            return query;
        }
    });
}
@Override
public View getItemView(ParseObject object, View v, ViewGroup parent) {
    if (v == null) {

        v = View.inflate(getContext(), R.layout.activity_main, null);
    }
    super.getItemView(object, v, parent);

    ParseImageView todoImage = (ParseImageView)     v.findViewById(R.id.icon);
    ParseFile imageFile = object.getParseFile("Logo");
    if (imageFile != null) {
        todoImage.setParseFile(imageFile);
        todoImage.loadInBackground();
    }

    TextView titleTextView = (TextView) v.findViewById(R.id.textView3);
    titleTextView.setText(object.getString("Name"));
    return v;
}
}

这是我试图显示详细信息的课程

 @ParseClassName("RestaurantDetail")
 public class SingleItemView extends Activity {

 // Declare Variables
 protected TextView txtname;
 String Name;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from singleitemview.xml
    setContentView(R.layout.single_item_view);

    txtname = (TextView) findViewById(R.id.name);

    // Retrieve data from MainActivity on item click event
    Intent random1 = getIntent();
    // Get the name
    Name = random1.getStringExtra("Name");

    // Locate the TextView in singleitemview.xml
    txtname = (TextView) findViewById(R.id.name);


    // Load the text into the TextView
    txtname.setText(Name);

}
}

0 个答案:

没有答案