2014-03-28 2 views
1

어댑터에서 이미지를 출력하는 Listfragmen을 사용합니다.두 개의 열 표시 ListFragment

이미지를 두 개의 열로 표시해야합니다.

listView 조각을 넣으려고하지만 데이터가 표시되지 않습니다.

이미지를 표시하는 두 개의 열이 있어야합니다.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical"> 
    <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
     <ListView 
       android:id="@id/android:list" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" android:layout_weight="1"> 
     </ListView> 
     <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="wrap_content" 
        android:layout_weight="1"/> 
    </LinearLayout> 
</LinearLayout> 

어댑터 코드

public class MyAdapter extends ArrayAdapter<Map<String, Object>> { 
    private final Activity context; 
    private final List<Map<String, Object>> datas; 

    public MyAdapter(Activity context, List<Map<String, Object>> datas) { 
     super(context, R.layout.items, datas); 
     this.context = context; 
     this.datas = datas; 
    } 

    class ViewHolder { 
     public TextView tvHeader; 
     public ImageView ivImage; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     Map<String, Object> itemData = datas.get(position); 
     Bitmap bitmap = (Bitmap) itemData.get("img"); 
     View rowView = convertView; 
     if (rowView == null) { 
      LayoutInflater inflater = context.getLayoutInflater(); 
      rowView = inflater.inflate(R.layout.items, null, true); 
      holder = new ViewHolder(); 
      holder.tvHeader = (TextView) rowView.findViewById(R.id.tvText); 
      holder.ivImage = (ImageView) rowView.findViewById(R.id.ivImg); 
      rowView.setTag(holder); 
     } else { 
      holder = (ViewHolder) rowView.getTag(); 
     } 

     holder.tvHeader.setText((String) itemData.get(MyActivity.ATTRIBUTE_NAME_TEXT)); 
     holder.ivImage.setImageBitmap(bitmap); 
     return rowView; 
    } 
} 

조각 코드

public class PlanetFragment extends ListFragment{ 
     Bundle bundle; 
     public int itpos ; 
     public String link; 
     MyAdapter sAdapter; 
     ArrayList<Map<String, Object>> data1; 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    data1 = new ArrayList<Map<String, Object>>(); 
    bundle = getArguments(); 
    itpos = bundle.getInt("position"); 
    link = bundle.getString("link"); 
    context = getActivity(); 
    NewThread t = new NewThread(); 
    t.setOnParseResult(new IOnParseResult() { 
     @Override 
     public void onDone(ArrayList<Map<String, Object>> data) { 
      data1 = data; 
      sAdapter = new MyAdapter(getActivity(), data1); 
      sAdapter.notifyDataSetChanged(); 
      setListAdapter(sAdapter); 
     } 

     @Override 
     public void onVideoLinkGet(String str) {} 
    }); 
    t.execute(link,"link"); 

} 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      return inflater.inflate(R.layout.videolist, null); 
     } 

     public void onListItemClick(ListView l, View v, int position, long id) { 
      super.onListItemClick(l, v, position, id); 
      Toast.makeText(getActivity(),data1.get(position).get("img").toString(), Toast.LENGTH_SHORT).show(); 
     } 
    } 

내가 어떻게 두 개의 열 ListFragment를 표시 할 수 있습니까?

+0

은 왜 2 개의 ListView를 않고 어디 (단지 수행하는 방법을 모르고 그렇게 한 listfragment 코드 – Raghunandan

+0

입니다 (( – IP696

+0

귀하의 요구 사항에 맞게 GridView를 사용하십시오. –

답변

1

두 개의 열을 표시하기 위해 GridView를 사용하십시오. 목록보기와 같이 쉽게 처리 할 수 ​​있습니다.

이 개 컬럼의 gridview를 만들기위한 내 XML 아래의 확인 및 목록보기 등의 설정 어댑터

<GridView 
     android:id="@+id/event_list" 
     android:layout_width="fill_parent" 
     android:layout_height="200dp" 
     android:horizontalSpacing="5dp" 
     android:numColumns="2"// check this line for making two column 
     android:padding="5dp" 
     android:scrollbars="none" 
     android:scrollingCache="false" 
     android:verticalSpacing="5dp" > 
    </GridView> 
+0

List를 GridView로 설정하는 방법은 무엇입니까? – IP696

+0

잘 작성한 어댑터이고 그리드 뷰에 어댑터를 설정하십시오. –