1

사용자 지정 목록보기를 만들었으며 ListFragment에 있습니다. 내 ListViewAdapter 클래스에서 행을 선택 가능하게 할 수 있습니다. 하지만 나는 ListFragment을 확장하고 내 세부적인 페이지를 시작하려는 행을 선택하여 내 CompraFragment 클래스에서 selectabe를 만들고 싶습니다. 그래서 2 질문이 있습니다 :사용자 지정 목록보기를 선택 가능하게 만들고 새 활동/조각을 실행하는 방법

1) 내 ListFragment 클래스에 선택 가능한 행이 있는지 확인한 다음 인 텐트 또는 조각 관리자를 통해 세부 정보 페이지를 시작하려면 어떻게해야합니까? 여기 두 번째 질문이 나온다.

2) 난 (내가 이미 Fragments 및/또는 ListFragments을 lauches 슬라이드 메뉴가 있음을 고려 Fragmet 또는 Activity로 상세 페이지를 시작해야 그러니까 기본적으로 3 단계 페이징 시스템 (메뉴 -.> 항목 -> 제품 상세)) 다음은

내 코드입니다 :

fragment_compra.xml

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

    <ListView 
     android:id="@+id/android:list" 
     android:layout_width="match_parent" 
     android:descendantFocusability="blocksDescendants" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

내 사용자 지정 목록보기 행 : listview_item_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:layout_marginTop="10dp" 
    android:layout_marginBottom="10dp" 
    android:clickable="false" 
     android:focusable="false" 
    android:padding="5dip" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/relativeLayout" 
     android:clickable="false" 
     android:focusable="false" 
     android:background="@drawable/list_selector" > 

      <!-- Image dell'ogetto --> 
    <ImageView 
     android:id="@+id/ic_thumbnail" 
     android:layout_width="95dip" 
     android:layout_height="95dip" 
     android:clickable="false" 
     android:focusable="false" 
     android:src="@drawable/ic_thumbnail" /> 

    <!-- Data di scadenza--> 
    <TextView 
     android:id="@+id/tvScadenza" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/ic_thumbnail" 
     android:layout_toRightOf="@+id/ic_thumbnail" 
     android:gravity="center" 
     android:textColor="#040404" 
     android:typeface="sans" 
     android:textSize="15sp" 
     android:clickable="false" 
     android:focusable="false" 
     android:textStyle="italic"/> 

    <ProgressBar 
     android:id="@+id/hProgressBar" 
     style="@style/CustomProgressBar" 
     android:progressDrawable="@drawable/progressbar_color" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/tvScadenza" 
     android:layout_alignBottom="@+id/ic_thumbnail" 
     android:clickable="false" 
     android:focusable="false" /> 

    <!-- Prezzo --> 
    <TextView 
     android:id="@+id/tvPrezzo" 
     android:layout_width="match_parent" 
     android:layout_height="75dp" 
     android:layout_below="@id/tvScadenza" 
     android:textColor="#343434" 
     android:textSize="30sp" 
     android:gravity="center" 
     android:clickable="false" 
     android:focusable="false" 
     android:layout_toRightOf="@+id/ic_thumbnail" /> 

    <!-- Followers --> 
    <TextView 
     android:id="@+id/tvFollowers" 
     android:layout_width="match_parent" 
     android:layout_height="35dp" 
     android:layout_below="@+id/tvPrezzo" 
     android:textColor="#343434" 
     android:textSize="20sp" 
     android:gravity="center" 
     android:background="@color/light_grey" 
     android:layout_toRightOf="@+id/ic_thumbnail" 
     android:clickable="false" 
     android:focusable="false" 
     android:text="@string/followers" /> 

    <!-- Bottone Segui --> 
    <Button 
     android:id="@+id/btnSegui" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="false" 
     android:focusable="false" 
     android:background="@drawable/ic_segui_m" 
     android:layout_alignBottom="@+id/tvFollowers" /> 


    </RelativeLayout> 

</LinearLayout> 

ListViewAdapter 클래스

import java.util.ArrayList; 
import java.util.HashMap; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.prjma.lovertech.R; 
import com.prjma.lovertech.model.Item; 

public class ListViewAdapter extends ArrayAdapter<String> { 

    private static LayoutInflater inflater = null; 

    public Context context; 
    public int layoutResourceId; 
    public ArrayList<HashMap<String, Object>> items; 
    public Bitmap icon; 

    //public ImageLoader imageLoader; 

    public ListViewAdapter(Context context, int listviewItemRow, ArrayList<HashMap<String, Object>> items, Bitmap icon) { 
     // TODO Auto-generated constructor stub 
     super(context, listviewItemRow); 
     this.items = items; 
     this.context = context; 
     this.icon = icon; 
    } 

    public int getCount() { 
     return items.size(); 
    } 

    public Item getItem(Item position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View row = convertView; 

     inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = inflater.inflate(R.layout.listview_item_row, null); 

     HashMap<String, Object> item = items.get(position); 

     if (item != null) { 

      ImageView listImage = (ImageView)row.findViewById(R.id.ic_thumbnail); 
      TextView scadenza = (TextView)row.findViewById(R.id.tvScadenza); 
      TextView prezzo = (TextView)row.findViewById(R.id.tvPrezzo); 
      TextView followers = (TextView)row.findViewById(R.id.tvFollowers); 
      ProgressBar hProgressBar = (ProgressBar)row.findViewById(R.id.hProgressBar); 


      if (listImage != null) { 
       listImage.setImageBitmap(icon); 
       listImage.setImageBitmap((Bitmap) item.get("pic1m")); 
      } 

      if (scadenza != null) { 
       scadenza.setText((CharSequence) item.get("scadenza")); 
      } 
      if (prezzo != null) { 
       prezzo.setText((CharSequence) item.get("prezzo")); 
      } 
      if (followers != null) { 
       followers.setText((CharSequence) item.get("followers")); 
      } 
      if (hProgressBar != null) { 
       hProgressBar.setProgress((Integer) item.get("coefficient")); 
      } 
     } 

     //row.onListItemClick(new OnItemClickListener1()); 
     row.setOnClickListener(new OnItemClickListener(position)); 
     return row; 
    } 

    private class OnItemClickListener implements OnClickListener { 

     private int mPosition; 

     private OnItemClickListener(int position){ 
      mPosition = position; 
     } 

     @Override 
     public void onClick(View arg0) { 

      Log.i("onListItemClickList", "Item clicked: " + mPosition); 

      Toast.makeText(context, "Message " + Integer.toString(mPosition), Toast.LENGTH_SHORT).show(); 

     } 
    } 
} 

compraFragment 클래스는

import java.util.ArrayList; 
import java.util.HashMap; 

import android.app.ListFragment; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.Toast; 

import com.prjma.lovertech.R; 
import com.prjma.lovertech.adapter.ListViewAdapter; 
import com.prjma.lovertech.util.MVPFunctions; 


public class CompraFragment extends ListFragment { 


    public ListView listView; 
    public ListViewAdapter adapter; 

    /** 
    * Keep track of the login task to ensure we can cancel it if requested. 
    */ 
    private DownloadTask mDownloadTask = null; 

    public ArrayList<HashMap<String, Object>> items; 
    public Bitmap icon; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     //View rootView = inflater.inflate(R.layout.fragment_compra, false); 
     View rootView = inflater.inflate(R.layout.fragment_compra, container, false); 

     // now you must initialize your list view 
     listView = (ListView) rootView.findViewById(android.R.id.list); 

     mDownloadTask = new DownloadTask(); 
     mDownloadTask.execute((Void) null);  

     return rootView; 
    } 



    /** 
    * Represents an asynchronous login/registration task used to authenticate 
    * the user. 
    */ 
    public class DownloadTask extends AsyncTask<Void, Void, Boolean> { 

     private ProgressDialog progressDialog; 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      // TODO: attempt authentication against a network service. 

      //prendi tutti gli id dal webserver 
      ArrayList<Long> ids = MVPFunctions.getMioSingolo().search(); 

      //per ogni id prendi l'elemento con tutti i valuori di risposta 
      items = new ArrayList<HashMap<String, Object>>(); 
      for(int i=0; i < ids.size(); i++){ 
       items.add(MVPFunctions.getMioSingolo().getItem(ids.get(i))); 
      } 
      return true; 
     } 


     @Override 
     protected void onPreExecute(){ 
      /* 
      * This is executed on UI thread before doInBackground(). It is 
      * the perfect place to show the progress dialog. 
      */ 
      progressDialog = ProgressDialog.show(getActivity(), "Wall", "Downloading Content..."); 
     } 

     @Override 
     protected void onPostExecute(final Boolean success) { 
      mDownloadTask = null; 

      // dismiss the dialog after getting all products 
      progressDialog.dismiss(); 
      //showProgress(false); 

      if (items.get(0).get("status error")!= null){ 
       Toast.makeText(getActivity(), "status error = " + items.get(0).get("status error"), Toast.LENGTH_LONG).show(); 
       Log.i("status error put toast", (String) items.get(0).get("status error")); 
       //fai qualcosa, tipo torna indietro, ecc 
      } 
      // updating UI from Background Thread 
      ListViewAdapter adapter = new ListViewAdapter(getActivity(),R.layout.listview_item_row, items, icon); 
      // updating listview 
      listView.setAdapter(adapter); 
     } 

     @Override 
     protected void onCancelled() { 
      mDownloadTask = null; 
      //showProgress(false); 
     } 
    } 
} 
+1

인 텐트를 사용하여 활동을 시작할 수 있습니다. – Raghunandan

+0

이 경우 어떻게 표시합니까? – Pheonix7

답변

1

예상대로 항목 목록보기를 볼 수 있다면, 항목을 클릭을 수행 한 후 다음 간단한 방법은 대한 OnItemClickListener을 구현하는 것입니다 수업. 여기서,

public class CompraFragment extends ListFragment implements OnItemClickListener 

그런 다음 클릭 된 항목의 위치를하고 전환 - 보내고 그것을 것 같은 usual- 세 번째 매개 변수를 수행 한 후, 구현되지 않은 메소드를 추가, 당신은 다음 활동에 대한 의도를 호출합니다.