2014-02-03 2 views
1

Я хочу создать массив stringin android listview, поэтому я использовал этот код, но evry time eclipse say Конструктор ArrayAdapter (listefriends.connect, int, String) не определен в этой строке, поэтому как мне помочь :make array в виде списка

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.listview, user); 

коды Java:

public class listefriends extends Activity { 
    ListView tvhttp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.friends); 
     setContentView(R.layout.activity_list_item); 
     tvhttp= ((ListView)findViewById(R.id.tvhttp)); 


     connect obj = new connect(); 
     obj.execute("http://development.www.chatpassion.org/androidchat/friends.php?username=yassine11"); 

    } 

    public class connect extends AsyncTask<String , Void , String> 
    { 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 
      BufferedReader reader = null; 
      String data = null; 
      try { 
       HttpClient client = new DefaultHttpClient(); 

       URI uri = new URI(params[0]); 

       HttpGet get = new HttpGet(uri); 

       HttpResponse response = client.execute(get); 

       InputStream stream = response.getEntity().getContent();    
       reader = new BufferedReader(new InputStreamReader(stream)); 
       StringBuffer buffer = new StringBuffer(""); 
       String line =""; 


       while ((line = reader.readLine()) !=null){ 
        buffer.append(line); 

       } 
       reader.close(); 

       data = buffer.toString(); 
       return data; 
      }catch (URISyntaxException e){ 
       e.printStackTrace();} 
      catch (ClientProtocolException e){ 
       e.printStackTrace();} 
      catch (IOException e){ 
       e.printStackTrace();} 

      finally { 
       if (reader !=null){ 
        try { 
         reader.close();} 
        catch (Exception e){Log.i("error", e.toString());} 

        } 
       } 

      return null; 
      } 



    @Override 
    protected void onPostExecute(String result) 
    { 
     super.onPostExecute (result); 
     JSONObject json; 
     //JSONObject objet2; 
     try { 
      json = new JSONObject(result); 
      //tvhttp.setText(json.toString(2)); 
      JSONArray jsonArray = json.getJSONArray("FriendsList"); 
      String user = null ; 

      for (int j = 0; j < jsonArray.length(); j++) { 

       JSONObject jsonObjectData1 = jsonArray.getJSONObject(j); 
       String username = jsonObjectData1.getString("username"); 
       String avatar = jsonObjectData1.getString("avatar"); 
       user = avatar.concat(username); 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.activity_list_item,user); 
       tvhttp.setAdapter(adapter); 
       //Log.i("tessssssssssst", user); 
      } 



     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 




} 
} 
} 

расположение ListView:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Single List Item Design --> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/label" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="10dip" 
     android:textSize="16dip" 
     android:textStyle="bold" > 
</TextView> 

расположение основной:

<?xml version="1.0" encoding="UTF-8"?> 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/scrollView1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

     <ListView 
      android:id="@+id/tvhttp" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 



    </ScrollView> 

ответ

1

Вы ListView внутри ScrollView что неправильно.

http://developer.android.com/reference/android/widget/ScrollView.html

Вы никогда не должны использовать Scrollview с ListView, потому что ListView заботится о своей собственной вертикальной прокруткой

Во-вторых, текущие параметры, которые вы передаете в конструктор ArrayAdapter неправильно.

Она должна соответствовать любой из ниже

ArrayAdapter(Context context, int resource) 
ArrayAdapter(Context context, int resource, int textViewResourceId) 
ArrayAdapter(Context context, int resource, T[] objects) 
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 
ArrayAdapter(Context context, int resource, List<T> objects) 
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) 

Edit:

ArrayList<Person> user = new ArrayList<Person>(); 
    //JSONObject objet2; 
    try { 
     json = new JSONObject(result); 
     //tvhttp.setText(json.toString(2)); 
     JSONArray jsonArray = json.getJSONArray("FriendsList"); 


     for (int j = 0; j < jsonArray.length(); j++) { 

      JSONObject jsonObjectData1 = jsonArray.getJSONObject(j); 
      String username = jsonObjectData1.getString("username"); 
      String avatar = jsonObjectData1.getString("avatar"); 
      Person p = new Person(); 
      p.setUsername(username); 
      p.setTitle(avatar); 
      user.add(p); 

     } 
     CustomAdapter cus = new CustomAdapter(listfriends.this,user); 
     tvhttp.setAdapter(cus); 


    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

CustomAdapter

public class CustomAdapter extends ArrayAdapter<Person> { 

    Context context; 
    LayoutInflater mInflater; 
    ArrayList<Person> user; 
    public CustomAdapter(Context context, ArrayList<Person> user) { 
    super(context,R.layout.row,user); 
    this.context =context; 
    this.user= user; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.row,parent, false); 
      holder = new ViewHolder(); 
      holder.tv1 = (TextView) convertView.findViewById(R.id.textView1); 
      holder.tv2 = (TextView) convertView.findViewById(R.id.textView2); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
      Person p = user.get(position); 
      holder.tv1.setText(p.getUsername()); 
      holder.tv2.setText(p.getTitle()); 
     return convertView; 
    } 
    static class ViewHolder 
    { 
     TextView tv1,tv2; 

    } 
} 

Person.java

public class Person { 
    String title,username; 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

} 

row.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="48dp" 
     android:layout_marginTop="55dp" 
     android:text="TextView" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="65dp" 
     android:text="TextView" /> 

</RelativeLayout> 
+0

ok я удаляю прокрутку, но не работает проблема в этой строке: ArrayAdapter adapter = new ArrayAdapter (это, R.layout.listview, пользователь); – user3234804

+0

@ user3234804 blackbelt уже предложил вам, что параметр 3rdd должен быть массивом или arraylist типа string – Raghunandan

+1

@Raghunandan user - это String, так как он называет concat на нем – Blackbelt

1

Да конструктор ArrayAdapter принимает третий параметр Коллекцию или массив объектов (String в вашем случае). Обратите внимание, что в вашем случае вы вставляете ListView внутри ScrollView, и это плохо. Поскольку ScrollView не позволяет прокручивать ListView

+0

ok я удаляю прокрутку, но она не работает. Проблема в этой строке: ArrayAdapter adapter = new ArrayAdapter (это, R.layout.listview, user); – user3234804

+0

Я знаю, и, как я уже сказал, он ожидает, что Array или ArrayList строки не будет строкой. – Blackbelt

+0

yes user is array of string, но я думаю, что проблема в первом параметре – user3234804

0

Я думаю, что вы создаете фрагмент, а не активность.

поэтому используйте getActivity().getApplicationContext() вместо this в строке ниже.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.listview, user); 
0

Вместо this использование listefriends.this. Вы не можете иметь прямо this здесь, так как вам действительно нужен контекст активности здесь.

Смежные вопросы