2016-07-26 107 views
0

单击列表项后无法获得更多详细信息。我正在从json获取带有文本的列表视图图像。但是在点击特定项目后我想要获取更多详细信息。 点击特定项目后,我没有得到更多的信息。单击列表项后无法获取更多详细信息。

我卡住了为什么我没有得到点击后。 看到图片中点击我得到的空白之后,同时我想尝试集名称,图片网址等详细

看到列表视图的图像

enter image description here enter image description here

适配器 - > Customlist Adapter.java

public class CustomListAdapter extends BaseAdapter { 
    private Activity activity; 
    private LayoutInflater inflater; 
    private List<Movie> movieItems; 
    ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 

    public CustomListAdapter(Activity activity, List<Movie> movieItems) { 
     this.activity = activity; 
     this.movieItems = movieItems; 
    } 

    @Override 
    public int getCount() { 
     return movieItems.size(); 
    } 

    @Override 
    public Object getItem(int location) { 
     return movieItems.get(location); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (inflater == null) 
      inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) 
      convertView = inflater.inflate(R.layout.list_row, null); 

     if (imageLoader == null) 
      imageLoader = AppController.getInstance().getImageLoader(); 
     /*ImageView img; 
     img = (ImageView)convertView 
       .findViewById(R.id.img); 

     img.setImageResource(R.drawable.bc); 
     else {*/ 

     NetworkImageView _ImageView = (NetworkImageView) convertView.findViewById(R.id.thumbnail); 
     _ImageView.setDefaultImageResId(R.drawable.bc); 
     //NetworkImageView.setImageUrl(m.getThumbnailUrl(), ImageLoader); 
     /*NetworkImageView thumbNail = (NetworkImageView) convertView 
       .findViewById(R.id.thumbnail);*/ 
     TextView name = (TextView) convertView.findViewById(R.id.name); 
     TextView average_ratings = (TextView) convertView.findViewById(R.id.average_ratings); 
     TextView address=(TextView) convertView.findViewById(R.id.area); 
     TextView cuisine =(TextView) convertView.findViewById(R.id.cuisine); 
     //TextView genre = (TextView) convertView.findViewById(R.id.genre); 
     //TextView year = (TextView) convertView.findViewById(R.id.releaseYear); 

     // getting movie data for the row 
     Movie m = movieItems.get(position); 

     // thumbnail image 
     //_ImageView.setImageUrl(m.getThumbnailUrl(), imageLoader); 
     /*if (TextUtils.isEmpty(m.getThumbnailUrl())) 
      thumbNail.setImageResource(R.drawable.bc); 
    else 
      //Log.d("KeyHash:","Neeraj");*/ 
     _ImageView.setImageUrl(m.getThumbnailUrl(), imageLoader); 
     /*if (m.getThumbnailUrl().compareTo("")!=0) 
      thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader); 
     //else{ 
     //thumbNail.setImageResource(R.drawable.bc); 

      else { 

       thumbNail.setDefaultImageResId(R.drawable.bc); 
       //thumbNail.setErrorImageResId(R.drawable.bc); 

     }*/ 


     // title 
     name.setText(m.getName()); 

     // rating 
     average_ratings.setText("Rating: " + String.valueOf(m.getAverage_ratings())); 
     address.setText("Area: " + String.valueOf(m.getAddress())); 
     cuisine.setText("Cusine: " + String.valueOf(m.getCuisine())); 
     /*// genre 
     String genreStr = ""; 
     for (String str : m.getGenre()) { 
      genreStr += str + ", "; 
     } 
     genreStr = genreStr.length() > 0 ? genreStr.substring(0, 
       genreStr.length() - 2) : genreStr; 
     genre.setText(genreStr); 

     // release year 
     year.setText(String.valueOf(m.getYear()));*/ 

     return convertView; 
    } 
} 

Appcontroller.java

public class AppController extends Application { 

    public static final String TAG = AppController.class.getSimpleName(); 

    private RequestQueue mRequestQueue; 
    private ImageLoader mImageLoader; 

    private static AppController mInstance; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mInstance = this; 
    } 

    public static synchronized AppController getInstance() { 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     if (mRequestQueue == null) { 
      mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 
     } 

     return mRequestQueue; 
    } 

    public ImageLoader getImageLoader() { 
     getRequestQueue(); 
     if (mImageLoader == null) { 
      mImageLoader = new ImageLoader(this.mRequestQueue, 
        new LruBitmapCache()); 
     } 
     return this.mImageLoader; 
    } 

    public <T> void addToRequestQueue(Request<T> req, String tag) { 
     // set the default tag if tag is empty 
     req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); 
     getRequestQueue().add(req); 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     req.setTag(TAG); 
     getRequestQueue().add(req); 
    } 

    public void cancelPendingRequests(Object tag) { 
     if (mRequestQueue != null) { 
      mRequestQueue.cancelAll(tag); 
     } 
    } 
} 

mmodel- movie.java

public class Movie { 
    private String name, thumbnailUrl; 
    //private int year; 
    private String average_ratings,area,cuisine,address; 
// private ArrayList<String> genre; 

    public Movie() { 
    } 

    public Movie(String name, String thumbnailUrl, String average_ratings, String area, String cuisine, String address 
      ) { 
     this.name = name; 
     this.thumbnailUrl = thumbnailUrl; 
     //this.year = year; 
     this.average_ratings = average_ratings; 
     this.area=area; 
     this.cuisine=cuisine; 
this.address=address; 
     //this.genre = genre; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public String getThumbnailUrl() { 
     return thumbnailUrl; 
    } 

    public void setThumbnailUrl(String thumbnailUrl) { 
     this.thumbnailUrl = thumbnailUrl; 
    } 

    /*public int getYear() { 
     return year; 
    }*/ 

    /*public void setYear(int year) { 
     this.year = year; 
    }*/ 

    public String getAverage_ratings() { 
     return average_ratings; 
    } 

    public void setAverage_ratings(String average_ratings) { 
     this.average_ratings = average_ratings; 
    } 
    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getCuisine() { 
     return cuisine; 
    } 

    public void setCuisine(String cuisine) { 
     this.cuisine = cuisine; 
    } 
    /*public ArrayList<String> getGenre() { 
     return genre; 
    } 

    public void setGenre(ArrayList<String> genre) { 
     this.genre = genre; 
    } 
*/ 
} 

ListViewActivity.java

public class ListViewActivity extends Activity { 
    // Log tag 
    private static final String TAG = ListViewActivity.class.getSimpleName(); 
    // change here url of server api 
    private static final String url = "http://6c936eaa.ngrok.io/api/v1/restaurants?per_page=10&page=1&sort_col=average_ratings"; 

    private ProgressDialog pDialog; 
    private List<Movie> movieList = new ArrayList<Movie>(); 
    private ListView listView; 

    private CustomListAdapter adapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_listview); 
     listView = (ListView) findViewById(R.id.list); 
     adapter = new CustomListAdapter(this, movieList); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       Movie movie = movieList.get(position); 
       // retrieve from movie whatever you want 
       movie.getName(); 

       Intent intent = new Intent(ListViewActivity.this,SecondActivity.class); 
       TextView name = (TextView) findViewById(R.id.name); 
       // name.setText(movie.getName()); 
       intent.putExtra("name",movie.getName()); 
       String name1 = intent.getStringExtra("name"); 
       name.setText(name1); 
       startActivity(intent); 
       intent.putExtra("param1",movie.getName()); 
       intent.putExtra("param2",movie.getName()); 
       intent.putExtra("param3",movie.getName()); 
       //Toast.makeText(getApplicationContext(),"Name: "+movie.getName(), Toast.LENGTH_LONG).show(); 
      } 
     }); 
     listView.setAdapter(adapter); 
     pDialog = new ProgressDialog(this); 
     // Showing progress dialog before making http request 
     pDialog.setMessage("Please Keep patience.Its loading..."); 

     pDialog.show(); 
     // changing action bar color 
     //getActionBar().setBackgroundDrawable(
       // new ColorDrawable(Color.parseColor("#1b1b1b"))); 
     // Creating volley request obj 
     JsonArrayRequest movieReq = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 
         hidePDialog(); 
         // Parsing json 
         for (int i = 0; i < response.length(); i++) { 
          try { 
           JSONObject obj = response.getJSONObject(i); 
           Movie movie = new Movie(); 
           //movie.setTitle(obj.getString("title")); 
           movie.setName(obj.getString("name")); 
           //movie.setThumbnailUrl(obj.getString("image")); 
           movie.setThumbnailUrl(obj.getString("image_url")); 
           movie.setAverage_ratings(obj.getString("average_ratings")); 
           movie.setCuisine(obj.getString("cuisine")); 
           movie.setAddress(obj.getJSONObject("address").getString("area")); 
           movie.setCost(obj.getString("cost")); 
           //movie.setYear(obj.getInt("releaseYear")); 
           // Genre is json array 
           /*JSONArray genreArry = obj.getJSONArray("genre"); 
           ArrayList<String> genre = new ArrayList<String>(); 
           for (int j = 0; j < genreArry.length(); j++) { 
            genre.add((String) genreArry.get(j)); 
           } 
           movie.setGenre(genre);*/ 
           // adding movie to movies array 
           movieList.add(movie); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 

         // notifying list adapter about data changes 
         // so that it renders the list view with updated data 
         adapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       hidePDialog(); 

      } 
     }); 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(movieReq); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     hidePDialog(); 
    } 

    private void hidePDialog() { 
     if (pDialog != null) { 
      pDialog.dismiss(); 
      pDialog = null; 
     } 
    } 



} 

list_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/ly_root" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="12dp" 
    android:background="#FEFEFE" 
    app:cardCornerRadius="8dp"> 
    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <com.android.volley.toolbox.NetworkImageView 
      android:id="@+id/thumbnail" 
      android:layout_width="120dp" 
      android:layout_height="100dp" 
      android:layout_marginRight="8dp" 
      android:scaleType="centerCrop" /> 

     <!-- Restaurant name --> 
     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 

      android:layout_toRightOf="@+id/thumbnail" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/area" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/name" 
      android:layout_toRightOf="@+id/thumbnail" 
      android:textColor="#D2691E"/> 

     <!-- Rating --> 
     <TextView 
      android:id="@+id/average_ratings" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/area" 
      android:layout_toRightOf="@+id/thumbnail" 
      android:textColor="#D2691E" /> 

     <TextView 
      android:id="@+id/cuisine" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/average_ratings" 
      android:layout_toRightOf="@+id/thumbnail" 
      android:textColor="#D2691E" /> 
    </RelativeLayout> 

</android.support.v7.widget.CardView> 



<!-- 
<?xml version="1.0" encoding="utf-8"?> 

<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="wrap_content" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    > 
&lt;!&ndash;<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_row_selector" 
    android:padding="8dp" >&ndash;&gt; 

    &lt;!&ndash; Thumbnail Image &ndash;&gt; 
    <android.support.v7.widget.CardView 
     android:id="@+id/ly_root" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#FEFEFE" 
     android:layout_margin="8dp" 
     app:cardCornerRadius="4dp"> 


    &lt;!&ndash;<android.support.v7.widget.CardView 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/card_view" 
     android:layout_gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     card_view:cardCornerRadius="4dp">&ndash;&gt; 
    <com.android.volley.toolbox.NetworkImageView 
     android:id="@+id/thumbnail" 
     android:layout_width="120dp" 
     android:layout_height="80dp" 
     android:scaleType="centerCrop" 
     android:layout_marginRight="8dp" /> 

    &lt;!&ndash; Restaurant name &ndash;&gt; 
    <TextView 
     android:id="@+id/name" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 

     android:layout_toRightOf="@+id/thumbnail" 
     android:textSize="@dimen/title" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/area" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/name" 
     android:textColor="#D2691E" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textSize="@dimen/rating" /> 

    &lt;!&ndash; Rating &ndash;&gt; 
    <TextView 
     android:id="@+id/average_ratings" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/area" 
     android:textColor="#D2691E" 
     android:layout_toRightOf="@+id/thumbnail" 

     android:textSize="@dimen/rating" /> 

    <TextView 
     android:id="@+id/cuisine" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/average_ratings" 
     android:textColor="#D2691E" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textSize="@dimen/rating" /> 

    &lt;!&ndash; Genre &ndash;&gt; 
    &lt;!&ndash; <TextView 
     android:id="@+id/genre" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/rating" 
     android:layout_marginTop="5dp" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textColor="@color/genre" 
     android:textSize="@dimen/genre" />&ndash;&gt; 
&lt;!&ndash; 
    &lt;!&ndash; Release Year &ndash;&gt; 
    <TextView 
     android:id="@+id/releaseYear" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:textColor="@color/year" 
     android:textSize="@dimen/year" />&ndash;&gt; 
    </android.support.v7.widget.CardView> 
</LinearLayout>--> 

SecondActivity.java

public class SecondActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.second_activity); 
     TextView name1 = (TextView) findViewById(R.id.name); 
     //name.setText(movie.getName()); 
     Bundle bundle = getIntent().getExtras(); 
     Toast.makeText(getApplicationContext(),"name from second activity "+bundle.getString("name"), Toast.LENGTH_LONG).show(); 
     String name = bundle.getString("name"); 
    /* String param1 = bundle.getString("param1"); 
    String param2 = bundle.getString("param2"); 
    String param3 = bundle.getString("param3");*/ 
    } 
} 

SecondActivty.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textStyle="bold" /> 
</LinearLayout> 
+0

检查下面的答案。 –

回答

1

试试这个,

添加代码为您listView.setOnItemClickListener

​​后

SecondActivity.java

public class SecondActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second_activity); 

     // get value from intent 
     Bundle bundle = getIntent().getExtras(); 
     String name = bundle.getString("name"); 
     String rating = bundle.getString("rating"); 
     String address = bundle.getString("area"); 
     String profileUrl = bundle.getString("image_url"); 

     // initialize view 
     TextView txtName = (TextView) findViewById(R.id.name); 
     TextView txtRating = (TextView) findViewById(R.id.rating); 
     TextView txtAddress = (TextView) findViewById(R.id.address); 
     NetworkImageView movieImage = (NetworkImageView)findViewById(R.id.movieImage); 

     //set values to view 
     txtName.setText(name); 
     txtAddress.setText(address); 
     txtRating.setText(rating); 
     movieImage.setDefaultImageResId(R.drawable.bc); 
     movieImage.setImageUrl(profileUrl, AppController.getInstance().getImageLoader()); 



     Toast.makeText(getApplicationContext(),"name from second activity "+bundle.getString("name"), Toast.LENGTH_LONG).show(); 

    } 
} 

注意补充一点: 在你的布局文件你必须为评级地址创建TextView 同样创造imageView为您的custom list

创建
+0

我必须在点击第二项活动后设置image_url,avreage_ratings,美食,区域等。 – user6313669

+0

我已经尝试过。我得到默认图像。默认意味着我已设置为图像url不存在时。它会显示。没有获得原始图像,没有获得评级以及地址。而我已经设置了布局。 – user6313669

+0

用给定的替换你的'listView.setOnItemClickListener'。 –

0

首先集中的所有数据开始您的活动

intent.putExtra("name",movie.getName()); 
intent.putExtra("param1",movie.getName()); 
intent.putExtra("param2",movie.getName()); 
intent.putExtra("param3",movie.getName()); 
startActivity(intent); 
1

现在好运。

Intent intent = new Intent(ListViewActivity.this,SecondActivity.class);     
Movie movie = movieList.get(position); 

intent.putExtra("name",movie.getName()); 
intent.putExtra("url",movie.getThumbnailUrl()); 
intent.putExtra("rating",movie.getAverage_ratings()); 
intent.putExtra("add",movie.getAddress()); 
intent.putExtra("cusine",movie.getCuisine()); 
startActivity(intent);  

SecondActivity。java

public class SecondActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.second_activity); 
     TextView name1 = (TextView) findViewById(R.id.name); 
     //name.setText(movie.getName()); 
     Bundle bundle = getIntent().getExtras(); 

     String name = bundle.getString("name"); 
     name.setText(name); 
     String url = bundle.getString("url"); 
     String rating = bundle.getString("rating"); 
     String add = bundle.getString("add"); 
     String cusine = bundle.getString("cusine"); 
    } 
} 
+0

image_url,avreage_ratings,美食,地区来自json。点击后可以设置第二个活动。我没有得到 。 – user6313669

+0

@ user6313669你有没有尝试我的answer.do你有teamviewer? –

+0

是的尝试过。我在第二次活动中只获得了名字。没有得到all.yes我有TeamViewer ID 772 127 914。 – user6313669