2017-08-11 57 views
-1

這是我所填充的ListView適配器,我有列表視圖中顯示只有一個項目點擊不是所有的單子

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import java.util.List; 

public class ListViewAdapter extends BaseAdapter { 

    private Activity activity; 
    private LayoutInflater inflater; 
    private List<Contact> DataList; 


    public ListViewAdapter(Activity activity, List<Contact> dataitem) { 
     this.activity = activity; 
     this.DataList = dataitem; 
    } 

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

    @Override 
    public Object getItem(int location) { 
     return DataList.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, null); 

     TextView name = (TextView) convertView.findViewById(R.id.name); 
     TextView companyName = (TextView) convertView.findViewById(R.id.companyName); 

     Contact m = DataList.get(position); 

     name.setText(m.getName()); 
     companyName.setText(String.valueOf(m.getCompanyName())); 


     return convertView; 
    } 




} 

這裏的代碼是我的主要

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

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonArrayRequest; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends Activity { 
    private static final String url = "https://s3.amazonaws.com/technical-challenge/v3/contacts.json"; 
    private List<Contact> l = new ArrayList<Contact>(); 
    private ListView listView; 
    private ListViewAdapter adapter; 


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

     listView = (ListView) findViewById(R.id.list); 
     adapter = new ListViewAdapter(this, l); 
     listView.setAdapter(adapter); 


     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       Intent i = new Intent(MainActivity.this, ContactDetail.class); 


       startActivity(i); 
      } 
     }); 



     JsonArrayRequest jsonreq = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 

         for (int i = 0; i < response.length(); i++) { 
          try { 
           JSONObject obj = response.getJSONObject(i); 
           Contact dataSet = new Contact(); 

           dataSet.setName(obj.getString("name")); 

           dataSet.setCompanyName(obj.getString("companyName")); 


           l.add(dataSet); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 

         } 
         adapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       AlertDialog.Builder add = new AlertDialog.Builder(MainActivity.this); 
       add.setMessage(error.getMessage()).setCancelable(true); 
       AlertDialog alert = add.create(); 
       alert.setTitle("Error!!!"); 
       alert.show(); 
      } 
     }); 
     Controller.getInstance(this).addToRequestQueue(jsonreq); 

    } 
} 

}

此代碼正常工作,並填充我的列表視圖,但是,當我點擊列表視圖中的項目時,我有另一個列表視圖填充顯示所有聯繫人項目...我只想要一個聯繫人項目顯示。

import android.app.Activity; 
import android.content.Context; 
import android.net.Uri; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.List; 

public class ListViewContactAdapter extends BaseAdapter { 

    private Activity activity; 
    private LayoutInflater inflater; 
    private List<Contact> DataList; 



    public ListViewContactAdapter(Activity activity, List<Contact> dataitem) { 
     this.activity = activity; 
     this.DataList = dataitem; 
    } 

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

    @Override 
    public Object getItem(int location) { 
     return DataList.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.contactlistinfo, null); 


     ImageView i = (ImageView) convertView.findViewById(R.id.imageView2); 
     TextView tv2 = (TextView) convertView.findViewById(R.id.textView2); 
     TextView tv4 = (TextView) convertView.findViewById(R.id.textView4); 
     TextView tv6 = (TextView) convertView.findViewById(R.id.textView6); 
     TextView tv8 = (TextView) convertView.findViewById(R.id.textView8); 
     TextView tv17 = (TextView) convertView.findViewById(R.id.textView17); 
     TextView tv18 = (TextView) convertView.findViewById(R.id.textView18); 
     TextView tv19 = (TextView) convertView.findViewById(R.id.textView19); 
     TextView tv20 = (TextView) convertView.findViewById(R.id.textView20); 

     TextView tv10 = (TextView) convertView.findViewById(R.id.textView10); 
     TextView tv12 = (TextView) convertView.findViewById(R.id.textView12); 
     TextView tv14 = (TextView) convertView.findViewById(R.id.textView14); 
     TextView tv16 = (TextView) convertView.findViewById(R.id.textView16); 


     Contact m = DataList.get(position); 


     tv2.setText(m.getName()); 
     tv4.setText(m.getCompanyName()); 
     tv6.setText(m.getHome()); 
     tv12.setText(m.getMobile()); 
     tv14.setText(m.getWork()); 
     tv8.setText(m.getStreet()); 
     tv18.setText(m.getCity()); 
     tv17.setText(m.getState()); 
     tv19.setText(m.getZipCode()); 
     tv20.setText(m.getCountry()); 


     tv10.setText(m.getBirthdate()); 
     tv16.setText(m.getEmail()); 

     i.setImageURI(Uri.parse("https://s3.amazonaws.com/technical-challenge/v3/images/elmer-fudd-small.jpg")); 

     return convertView; 


    } 


} 

現在,這裏是我有它被填充。但爲什麼它會顯示爲另一個列表listview?我只想要一個項目。

import android.app.AlertDialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ListView; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonArrayRequest; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.List; 

public class ContactDetail extends AppCompatActivity { 


    private static final String url = "https://s3.amazonaws.com/technical-challenge/v3/contacts.json"; 
    private List<Contact> l = new ArrayList<Contact>(); 
    private ListView listView; 
    private ListViewContactAdapter adapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_contact_detail); 

     listView = (ListView) findViewById(R.id.list2); 
     adapter = new ListViewContactAdapter(this, l); 


     listView.setAdapter(adapter); 


     JsonArrayRequest jsonreq = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 

         for (int i = 0; i < response.length(); i++) 
          try { 
           JSONObject obj = response.getJSONObject(i); 




           // Phone 
           JSONObject phone = obj.getJSONObject("phone"); 
           String home = phone.getString("home"); 
           String mobile = phone.getString("mobile"); 
           String work = phone.getString("work"); 


           //Address 
           JSONObject address = obj.getJSONObject("address"); 
           String street = address.getString("street"); 
           String city= address.getString("city"); 
           String state= address.getString("state"); 
           String country= address.getString("country"); 
           String zipCode= address.getString("zipCode"); 

           Contact dataSet = new Contact(); 


           dataSet.setName(obj.getString("name")); 
           dataSet.setCompanyName(obj.getString("companyName")); 
           dataSet.setBirthdate(obj.getString("birthdate")); 
           dataSet.setEmail(obj.getString("emailAddress")); 

           dataSet.setHome(home); 
           dataSet.setMobile(mobile); 
           dataSet.setWork(work); 

           dataSet.setStreet(street); 
           dataSet.setState(state); 
           dataSet.setCity(city); 
           dataSet.setZipCode(zipCode); 
           dataSet.setCountry(country); 

           dataSet.setImage(obj.getString("largeImageURL")); 

           l.add(dataSet); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 



         adapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       AlertDialog.Builder add = new AlertDialog.Builder(ContactDetail.this); 
       add.setMessage(error.getMessage()).setCancelable(true); 
       AlertDialog alert = add.create(); 
       alert.setTitle("Error!!!"); 
       alert.show(); 
      } 
     }); 
     Controller.getInstance(this).addToRequestQueue(jsonreq); 


    } 
} 
+1

你能否提供更多的細節。請僅嘗試添加代碼的相關部分。 – Psypher

回答

0

我想你的ContactDetail活動再次獲得列表。如果你在第一個活動中點擊一個項目時只需要一個項目,你又需要再次顯示一個列表視圖。

無論如何,如果你仍然想在ContactDetail使用列表視圖,然後在你的ContactDetails活動在listview.setOnItemClickListener做..

在MainActivity

Intent intent = new Intent(MainActivity.this, ContactDetail.this); 
intent.putExtra("contact", l.get(position)); 
startActivity(intent); 

,這種更換..刪除JsonArrayRequest

listView = (ListView) findViewById(R.id.list2); 
Contact contact = getIntent().getSerializableExtra("contact"); 
l.add(contact); 
adapter = new ListViewContactAdapter(this, l); 
listView.setAdapter(adapter); 

,並確保您的聯繫對象實現Serializable

相關問題