2017-01-04 2 views
0

Ich verwende eine Rasteransicht mit Basisadapter. Wann immer die Aktivität geöffnet wird, sollte die Gridview mit der Standardansicht in der Mitte angezeigt werden und wenn Benutzer Elemente hinzufügen, sollte sie anhängen, d. h. sie sollte neben der Standardansicht erscheinen.Android GridView: mit Standardansicht in der Mitte

Hier, wenn Sie auf die Standardansicht klicken, startet es verschiedene Aktivitäten und klicken Sie auf andere Elemente öffnet verschiedene Aktivitäten.

Unten ist mein BaseAdapter

public class CustomBaseAdapter extends BaseAdapter { 
    Context context; 
    List<RowItem> rowItems; 

    public CustomBaseAdapter(Context context, List<RowItem> items) { 
     this.context = context; 
     this.rowItems = items; 
    } 

    /*private view holder class*/ 
    private class ViewHolder { 
     ImageView imageView; 
     TextView txtTitle; 

    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 

     LayoutInflater mInflater = (LayoutInflater) 
       context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 



      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.addcompany_layout, null); 
       holder = new ViewHolder(); 

       holder.txtTitle = (TextView) convertView.findViewById(R.id.location); 
       holder.imageView = (ImageView) convertView.findViewById(R.id.addbutton); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      RowItem rowItem = (RowItem) getItem(position); 


      holder.txtTitle.setText(rowItem.getTitle()); 
      holder.imageView.setImageBitmap(BitmapFactory 
        .decodeFile(rowItem.getImagepath())); 
       return convertView; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return rowItems.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return rowItems.indexOf(getItem(position)); 
    } 
} 

Unten ist mein Aktivität

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.addcompanytogrid_layout); 
     // Bitmap homeIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.add); 
     //String imageUri = "drawable://" + R.drawable.add; 

     Uri otherPath =Uri.parse("android.resource://tabquote.mycompany.com.myquate/" + R.drawable.add); 
     String imageUri = otherPath .toString(); 

     rowItemstodisplay = new ArrayList<RowItem>(); 
     allitems = new ArrayList<RowItem>(); 

     // RowItem item = RowItem.getInstance(); 
     RowItem item = new RowItem(); 

     String im = item.getImagepath(); 
     String ti = item.getTitle(); 
     rowItemstodisplay.add(new RowItem(im,ti)); 
     RowItem item1 = new RowItem(); 

     item1.setImagepath(im); 
     item1.setTitle("Add Company"); 
     rowItemstodisplay.add(item1); 

     for (int i=0; i<rowItemstodisplay.size(); i++) { 
      allitems.add(rowItemstodisplay.get(i)); 
     } 

     listView = (GridView) findViewById(R.id.gv); 
     CustomBaseAdapter adapter = new CustomBaseAdapter(this, rowItemstodisplay); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(this); 

    } 
+0

Was ist dein Problem? – Spartan

+0

Die Standardansicht kann nicht abgerufen werden. Items fügen hinzu, sind aber nicht sicher, wie man defaultview implementiert – hari86

+0

hinzufügen Aktivitätscode –

Antwort

0

warum hier Sie definieren Viewgroup null

convertView = mInflater.inflate(R.layout.addcompany_layout, null); 

statt dieses Add

 convertView = mInflater.inflate(R.layout.addcompany_layout,parent,false);