2016-06-10 9 views
0

Das ist mein Java-Codeandroid Benutzerdefinierte Adapter anhängen ein Element nur

public class profile extends Activity { 

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

    String[] web = profile.this.getResources().getStringArray(R.array.nav_drawer_labels); 


    Integer[] imageId = { 
      R.drawable.ic_home, 
      R.drawable.ic_tv, 
      R.drawable.ic_ticket, 
      R.drawable.ic_offers, 
      R.drawable.ic_earning, 
      R.drawable.ic_usemoney, 
      R.drawable.ic_ranking, 
      R.drawable.ic_faq, 
      R.drawable.ic_symbol21, 


    }; 



    profile.CustomList adapter1 = new 
      profile.CustomList(profile.this, web, imageId); 
    ListView list=(ListView)findViewById(R.id.list); 
    adapter1.notifyDataSetChanged(); 
    list.setAdapter(adapter1); 

} 
public class CustomList extends ArrayAdapter<String> { 

    private final Activity context; 
    private final String[] web; 
    private final Integer[] imageId; 
    public CustomList(Activity context, 
         String[] web, Integer[] imageId) { 
     super(context, R.layout.nav_drawer_row, web); 
     this.context = context; 

     this.web = web; 
     this.imageId = imageId; 

    } 

    @Override 
    public int getCount() { 

     return web.length; 
    } 



    @Override 
    public long getItemId(int position) { 

     return position; 
    } 
    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 



     View rowView= inflater.inflate(R.layout.nav_drawer_row, null, true); 
     TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); 





     ImageView imageView = (ImageView) rowView.findViewById(R.id.img); 
     txtTitle.setText(web[position]); 

     imageView.setImageResource(imageId[position]); 
     return rowView; 
    } 
} 

}

und diese meine String-Werte

<string-array name="nav_drawer_labels"> 
    <item>@string/title_home</item> 
    <item>@string/title_videos</item> 
    <item>@string/title_coupens</item> 
    <item>@string/title_offers</item> 
    <item>@string/title_extraearning</item> 
    <item>@string/title_usemoney</item> 
    <item>@string/title_ranking</item> 
    <item>@string/title_faq</item> 
    <item>@string/title_signout</item> 
</string-array> 

, wenn ich es laufen seine gib mir nur ein Objekt in Listview

und das ist mein ListView xml

<ListView 
    android:layout_marginLeft="7dp" 
    android:layout_marginTop="10dp" 
    android:id="@+id/list" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:divider="@color/dividercolour"> 

    </ListView> 

enter image description here

Ich möchte einen benutzerdefinierten Adapter für meine Listenansicht erstellen. so, wenn ich die Tätigkeit seiner Show nur ein Element

+0

haben Sie überprüfen Sie 'web String []' mit 'debbugger'? ob es "Länge" mehr als "1" hat? –

+0

ich mache das String [] web = {"aaaaaa", "aaaaaa", "aaaaaa", "aaaaaa", "aaaaaa", "aaaaaa", "aaaaaa", "aaaaaa", "aaaaaa"}; und das gleiche nur ein Element an die Listenansicht anhängen –

+0

Ändern Sie 'ListView's' layout_height' in 'match_parent'. –

Antwort

0

laufen Versuchen getCount() und getItemId() Methoden

public class CustomList extends ArrayAdapter<String> { 
    private final Activity context; 
    private final String[] web; 
    private final Integer[] imageId; 
    public CustomList(Activity context, 
         String[] web, Integer[] imageId) { 
     super(context, R.layout.nav_drawer_row, web); 
     this.context = context; 
     this.web = web; 
     this.imageId = imageId; 

    } 

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View rowView= inflater.inflate(R.layout.nav_drawer_row, parent, false); 
     Log.d("position",""+position); 
     TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.img); 

     txtTitle.setText(web[position]); 

     imageView.setImageResource(imageId[position]); 
     return rowView; 
    } 
} 
} 

Überprüfen Sie das Protokoll für die Position zu entfernen, ob es sich um ein Element oder alle Anzeigen?

+0

gleichen ein Element nur append:/ –

+1

Verwenden Sie Listview in einem Scrollview? und hast du das Protokoll überprüft? –

+0

D/Position: 0 D/Position: 1 D/Position: 0 D/Position: 0 D/Position: 0 D/Position: 0 –

0

Offenbar weisen Sie Ihre Arrays im ArrayAdapter-Konstruktor falsch zu.

Statt:

this.web = web; 
this.imageId = imageId; 

Versuch:

this.web = Arrays.copyOf(web, web.length); 
this.imageId = Arrays.copyOf(imageId, imageId.length); 
Verwandte Themen