2016-10-27 3 views
0

Ich habe eine Aktivität mit CustomAdapter ListView und TabLayout mit drei Registerkarten TrainerTab1, TrainerTab2, TrainerTab3. Beim Klicken auf ein Element sollte es zur nächsten Seite gehen, die zu TrainerTab1 Fragment ist.Angepasste Listenansicht onClick bewegt sich nicht auf Registerkarte Fragmente Seite

Ich muss die ID von ListViewonClick() zu Fragment Seite übergeben. Ich habe Bundle verwendet, um Wert zu übergeben, aber die Elemente funktionieren nicht. Wenn ich auf ein Element klicke, reagiert es nicht und zeigt keinen Fehler an.

Meine benutzerdefinierte ListViewClass ist:

public class Trainer extends AppCompatActivity { 

    String tabUrl = "http://adoxsolutions.in/numuww/services/trainers"; 
    private GridView gridView; 
    ArrayList<HashMap<String, String>> alist = new ArrayList<>(); 
    private TrainAdapter adapter; 
    private ProgressDialog mprogress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_trainer); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 

     new Train().execute(); 

    } 

    private class Train extends AsyncTask<Void, Void, Void> { 

     protected void onPreExecute() { 
      mprogress = new ProgressDialog(Trainer.this); 
      mprogress.setMessage("Loading..."); 
      mprogress.setIndeterminate(false); 
      mprogress.show(); 

     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      try { 

       URL url = new URL(tabUrl); 
       HttpURLConnection connect = (HttpURLConnection) url.openConnection(); 
       connect.setRequestMethod("POST"); 

       //    
       System.out.println("Response Code:" + connect.getResponseCode()); 
       InputStream in = new BufferedInputStream(connect.getInputStream()); 
       String response = org.apache.commons.io.IOUtils.toString(in, "UTF-8"); 
       System.out.println(response); 
       Log.d("VALUE:", response); 

       JSONObject obj = new JSONObject(response); 
       JSONArray jsArray = obj.optJSONArray("Trainers"); 
       for (int k = 0; k < jsArray.length(); k++) { 
        HashMap<String, String> map = new HashMap<String, String>(); 
        obj = jsArray.getJSONObject(k); 
        map.put("id", obj.getString("id")); 
        map.put("name", obj.getString("name")); 
        map.put("logo", obj.getString("img")); 
        alist.add(map); 
       } 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void args) { 

      gridView = (GridView) findViewById(R.id.trainerGrid); 
      adapter = new TrainAdapter(getBaseContext(), alist); 
      gridView.setAdapter(adapter); 
      adapter.notifyDataSetChanged(); 
      mprogress.dismiss(); 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.newc, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_search) { 
      return true; 
     } 
     else if(id == android.R.id.home){ 
      onBackPressed(); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 

    } 
} 

class TrainAdapter extends BaseAdapter { 
    private Context context; 
    private ArrayList<HashMap<String, String>> MyArr = new ArrayList<HashMap<String, String>>(); 

    public TrainAdapter(Context c, ArrayList<HashMap<String, String>> list){ 
     context = c; 
     MyArr = list; 
    } 

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

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

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

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

     if(convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.trainer_list, null); 
     } 
      TextView id= (TextView) convertView.findViewById(R.id.trainerId); 
      ImageView image = (ImageView) convertView.findViewById(R.id.trainerImage); 
      TextView text = (TextView) convertView.findViewById(R.id.trainerTexts); 
      try { 
       image.setImageBitmap(loadBitmap(MyArr.get(position).get("logo"))); 
       text.setText(MyArr.get(position).get("name")); 
       id.setText(MyArr.get(position).get("id")); 

       if (((position - 9)/3) % 9 == 0) { 
        ImageView adimg = (ImageView) convertView.findViewById(R.id.trainadBanner); 
        adimg.setScaleType(ImageView.ScaleType.FIT_XY); 
        adimg.getLayoutParams().height=150; 
        adimg.getLayoutParams().width=300; 
        adimg.setImageResource(R.drawable.mainad); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     convertView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Bundle h=new Bundle(); 
       h.putString("id",MyArr.get(position).get("id")); 
       Fragment tt1=new TrainerTab1(); 
       tt1.setArguments(h); 

      } 
     }); 

//  }else{ 
//   convertView=inflater.inflate(R.layout.trainer_list, parent,false); 
//   ImageView image= (ImageView) convertView.findViewById(R.id.trainerImage); 
//   TextView text= (TextView) convertView.findViewById(R.id.trainerTexts); 
//   try{ 
//    image.setImageResource(R.drawable.ic_action_name); 
//    text.setText(MyArr.get(position).get("name")); 
//    if(position % 9 == 0){ 
//     ImageView adimg= (ImageView) convertView.findViewById(R.id.trainadBanner); 
//     adimg.setImageResource(R.drawable.mainad); 
//    } 
// 
//   } catch(Exception e){ 
//    e.printStackTrace(); 
//   } 
     return convertView; 
    } 

    private static final String TAG = "ERROR"; 
    private static final int IO_BUFFER_SIZE = 4 * 1024; 

    private static Bitmap loadBitmap(String tabUrl) { 

     Bitmap bitmap = null; 
     InputStream in = null; 
     BufferedOutputStream out = null; 

     try { 
      in = new BufferedInputStream(new URL(tabUrl).openStream(), IO_BUFFER_SIZE); 
      final ByteArrayOutputStream dataStream = new ByteArrayOutputStream(); 
      out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE); 
      copy(in, out); 
      out.flush(); 

      final byte[] data = dataStream.toByteArray(); 
      BitmapFactory.Options options = new BitmapFactory.Options(); 

//options.inSampleSize = 1; 
      bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options); 
     } catch (IOException e) { 
      Log.e(TAG, "Could not load Bitmap from: " + tabUrl); 
     } finally { 
      closeStream(in); 
      closeStream(out); 
     } 
     return bitmap; 
    } 

    private static void closeStream(Closeable stream) { 
     if (stream != null) { 
      try { 
       stream.close(); 
      } catch (IOException e) { 
       android.util.Log.e(TAG, "Could not close stream", e); 
      } 
     } 
    } 
    private static void copy(InputStream in, OutputStream out) throws IOException { 
     byte[] b = new byte[IO_BUFFER_SIZE]; 
     int read; 
     while ((read = in.read(b)) != -1) { 
      out.write(b, 0, read); 
     } 
    } 

} 

My Tab Fragment:

public class TrainerTab1 extends Fragment { 

    String turl="http://adoxsolutions.in/numuww/services/trainer"; 
    TextView tname,tplace,tsex; 

    public TrainerTab1() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View rootView= inflater.inflate(R.layout.fragment_trainer_tab1, container, false); 

      final String tid=getArguments().getString("id"); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     tname= (TextView) rootView.findViewById(R.id.trainerCourse); 
     tplace= (TextView) rootView.findViewById(R.id.trainerPlace); 
     tsex= (TextView) rootView.findViewById(R.id.trainerSex); 
     ImageView photo= (ImageView) rootView.findViewById(R.id.trainer_photo); 
    } 
} 
+0

nach das Bündel an das Fragment das Hinzufügen, in dem Sie das Fragment Transaktion verwendet haben, um das Fragment zu ersetzen/hinzufügen? –

+0

Sie müssen das Fragment ersetzen, um das Fragment zu ändern 'FragmentTransaction transaction = getSupportFragmentManager(). BeginTransaction(); transaction.replace (R.id.fragment_container, FragmentObject); ' – Gaurav

Antwort

0

Im Inneren des onClickListener nach das Bündel mit dem Fragment hinzugefügt wird.

FragmentManager fragmentManager = Trainer.this.getSupportFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.add(R.id.someIDForYourFrameLayout, tt1).commit(); 
0

können Sie nur herausfinden, wo genau dies zu verwenden ist. Ich meine, ich verstehe nicht, wie man die ID eines Fragments zu transaction.add hinzufügen kann (R.id.someIDForYourFrameLayout, tt1) .commit(); Ich habe versucht, wie folgt aus:

Bundle h=new Bundle(); 
       h.putString("id",MyArr.get(position).get("id")); 
       Fragment tt1=new TrainerTab1(); 
       tt1.setArguments(h); 
       FragmentTransaction transact=getSupportFragmentManager().beginTransaction(); 
       transact.add(R.id.trainerFragment,tt1).commit(); 

Das ist mein fragment_trainer_tab_1 Layout:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="vertical" 
    android:scrollbarSize="1dp" 
    android:id="@+id/trainerFragment" 
    tools:context="com.example.anu.numuww.TrainerTab1"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:padding="12dp" 
      android:background="@color/blue"> 

      <ImageView 
       android:id="@+id/trainer_photo" 
       android:layout_width="120dp" 
       android:layout_height="120dp" 
       android:layout_gravity="center" 
       android:contentDescription="@string/trainers" 
       android:src="@mipmap/ic_launcher" 
       android:layout_marginTop="20dp"/> 
      <TextView 
       android:id="@+id/trainerCourse" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="" 
       android:layout_marginTop="12dp" 
       android:textColor="#ffffff" 
       android:textSize="22sp" 
       android:gravity="center"/> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:orientation="horizontal"> 
      <TextView 
       android:id="@+id/trainerSex" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="" 
       android:layout_marginTop="5dp" 
       android:textColor="#ffffff" 
       android:textSize="17sp" 
       android:layout_gravity="center"/> 
       <TextView 
        android:id="@+id/trainerPlace" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="" 
        android:layout_marginLeft="5dp" 
        android:layout_marginTop="5dp" 
        android:textColor="#ffffff" 
        android:textSize="17sp" 
        android:gravity="center"/> 
      </LinearLayout> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#F5F5F5" 
      android:gravity="center_horizontal" 
      android:padding="7dp" 
      android:orientation="horizontal"> 
      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/global"/> 

      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/messenger"/> 
      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/google_plus"/> 

      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/inst_detail"/> 
      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/telegram"/> 
      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/facebook"/> 
      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/twitter"/> 
      <ImageView 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:padding="2dp" 
       android:src="@drawable/inst_instagram"/> 

     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="14dp" 
      android:orientation="vertical"> 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="3dp" 
       android:text="About Trainer" 
       android:textColor="@color/blue" 
       android:textSize="19sp" 
       android:textStyle="bold"/> 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/para" 
       android:layout_marginTop="4dp" 
       android:layout_marginBottom="2dp" 
       android:textSize="14sp"/> 
     </LinearLayout> 
    </LinearLayout> 

</ScrollView>