2013-12-21 49 views
0

即時呼叫我的佈局併爲其設置項目,但getview()不返回任何內容。Android getview()不返回

我的主類:

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

     ViewHolder holder; 

     if (convertView == null) { 
      convertView = inflater 
        .inflate(R.layout.grid_view_item_layout, null); 

      holder = new ViewHolder(); 

      holder.image = (ImageView) convertView 
        .findViewById(R.id.selection_item_image); 
      holder.text = (TextView) convertView 
        .findViewById(R.id.selection_item_text); 

      convertView.setTag(holder); 
      //holder.image.setPadding(8, 8, 8, 8); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     DraggableRelativeLayout layout = (DraggableRelativeLayout) convertView; 
     convertView.setOnLongClickListener(this); 
     convertView.setOnClickListener(this); 
     LauncherGridItem item = getItems().get(position); 

     layout.setItem(item); 
     layout.setDragListener(this); 
     // holder.image.setOnLongClickListener(this); 
     Drawable d = holder.image.getDrawable(); 
     // if (d != null) { 
     d.setCallback(null); 
     // } 
     holder.image.setImageDrawable(null); 
     if (!item.getUrl().startsWith("http")) { 

      try { 
       holder.image.setImageDrawable(context.getResources() 
         .getDrawable(
           context.getResources().getIdentifier(
             context.getApplicationContext() 
               .getPackageName() 
               + ":drawable/" + item.getUrl(), 
             null, null))); 
      } catch (NotFoundException e) { 
       holder.image.setImageResource(android.R.drawable.ic_menu_view); 
      } 
     } else { 
//   Image cached = images.get(position); 
      if(item.getImage() == null) 
      { 
       holder.image.setImageResource(R.drawable.avatar); 
      } else { 

       holder.image.setScaleType(ScaleType.CENTER_INSIDE); 
       holder.image.setImageBitmap(item.getImage()); 
      } 
      } 
     } 
     holder.text.setText(item.getCaption()); 
     layout.setImage(holder.image); 
     layout.setText(holder.text); 
     layout.setItem(item); 
     layout.canDelete(item.canDelete()); 
     return convertView; 

}

我甚至檢查if語句和程序的項目是有效的和:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.MymainView); 
     grid = (GridView) findViewById(R.id.grid); 
     if (getScreenOrientation() == 1) 
      grid.setNumColumns(3); 
     else 
      grid.setNumColumns(4); 

     items = new ArrayList<LauncherGridItem>(); 
     Intent intent = new Intent(this, Activity2.class); 
     intent.putExtra("Param1", "Child Activity"); 

     items.add(new LauncherGridItem("ic_launcher", "Item 1", 
       intent)); 
    adapter = new LauncherGridAdapter(this, items, grid, dragLayer, 
      deleteZone); 
    adapter.setPersistenceToken("MyLauncherGrid"); 
    adapter.setDragListener(this); 
    adapter.setEditable(true); 
    grid.setAdapter(adapter); 

而且我LauncherGridAdapter,getview()的文件部分不爲空。 香港專業教育學院還增加了這些,但仍然沒有在GridView控件:

我想這個問題是「grid_view_item_layout」根本

顯示出這是「主」的佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical" android:background="#CCCCCC"> 
    <com.myapp.ui.drag.DragLayer 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" 
     android:id="@+id/drag_layer" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:layout_above="@+id/handle"> 
     <GridView 
      android:id="@+id/grid" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginBottom="65dip" 
      android:background="@color/BlanchedAlmond" 
      android:numColumns="3" 
      android:scrollbars="vertical" /> 
     <com.myapp.ui.drag.DeleteZone 
      android:id="@+id/delete_zone_view" android:layout_width="fill_parent" 
      android:layout_height="60dp" android:layout_alignParentBottom="true" 
      android:layout_centerInParent="true" android:background="@drawable/delete_zone_bg" 
      android:visibility="gone"> 
      <ImageView android:layout_width="60dp" 
       android:layout_height="60dp" android:layout_centerInParent="true" 
       android:src="@drawable/trashcan" /> 
     </com.myapp.ui.drag.DeleteZone> 
    </com.myapp.ui.drag.DragLayer> 
    </LinearLayout> 

和這是grid_view_item_layout佈局:

<?xml version="1.0" encoding="utf-8"?> 
<com.myapp.ui.drag.DraggableRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/CadetBlue" 
    android:orientation="vertical" > 

    <ImageView android:id="@+id/selection_item_image" android:scaleType="centerInside" 
     android:src="@drawable/avatar" android:layout_width="wrap_content" 
     android:layout_height="60dip" android:layout_centerHorizontal="true" /> 
    <TextView android:layout_width="wrap_content" android:id="@+id/selection_item_text" 
    android:maxLines="1" android:lines="1" android:scrollHorizontally="true" android:ellipsize="end" 
    android:layout_height="wrap_content" android:textColor="@android:color/black" 
    android:text="(Selection Text)" android:layout_below="@+id/selection_item_image" android:layout_centerHorizontal="true" 
    ></TextView> 
</com.myapp.ui.drag.DraggableRelativeLayout> 

im using plusgrid GridView之間移動項目的佈局。該函數在源項目上工作,但當我嘗試在我的下發布時,沒有錯誤發生,再加上沒有gridview。

如果我更改getview()的最後一行返回convertView;返回佈局;仍然沒有發生。

+0

您是否在'LauncherGridAdapter'中擴展了'BaseAdapter'? –

+0

是的,這裏是代碼的開始行: 公共類LauncherGridAdapter延伸BaseAdapter實現 \t \t OnLongClickListener,OnClickListener,DragListener, \t \t DeleteLaunchItemHandler { –

回答

4

您必須覆蓋getCount()方法和改變返回的值與您的清單像婁代碼的大小:

@Override 
public int getCount() { 
    log.d("result of count is",""+items.size()) 
    return items.size(); 
} 
+0

感謝的方法,但他們在那裏已經存在,仍然沒有在GridView的 –

+0

變化getItems( )與項目(我認爲是你的名單)在getCount方法,並在此之前記錄的值,以確保不是空的 –

+0

+1。我不知道這個,但做了一個測試,並在我的應用程序中將長度設置爲0。結果:沒有任何返回 –

0

默認情況下,將有4種方法,你必須覆蓋在適配器中實現:getCount, getItem, getItemId and getView.

+0

ive添加了這些,但在gridview中仍然沒有 –