Это - то, что я протестировал, не получая ожидаемых результатов:
private final View.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = null;
switch (position) {
case 0: //search//todo
intent = new Intent(context, Fragment_Tabs.class);
context.startActivity(intent);
break;
}
И здесь он, где я остаюсь блокированным полностью с (View v
):
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.javier.MaterialDesignApp.R;
import com.example.javier.MaterialDesignApp.RecyclerView.RecyclerViewClasses.Calendario;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
public class Adapter_Calendario extends RecyclerView.Adapter<Adapter_Calendario.ViewHolder>{
private ArrayList<Calendario> calendario;
Context context;
private final View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"Clicked",Toast.LENGTH_SHORT).show();
}
};
// Adapter's Constructor
public Adapter_Calendario(Context context, ArrayList<Calendario> calendario) {
this.calendario = calendario;
this.context = context;
}
// Create new views. This is invoked by the layout manager.
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new view by inflating the row item xml.
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post, parent, false);
v.setOnClickListener(onClickListener);
return new ViewHolder(v);
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
// Set strings to the views
final TextView textViewJornada = (TextView) holder.view.findViewById(R.id.tv_jornada);
final TextView textViewFecha = (TextView) holder.view.findViewById(R.id.tv_fecha);
final TextView textViewHora = (TextView) holder.view.findViewById(R.id.tv_hora);
final TextView textViewEquipo_local = (TextView) holder.view.findViewById(R.id.tv_equipo_local);
final TextView textViewResultado_local = (TextView) holder.view.findViewById(R.id.tv_resultado_local);
final TextView textViewResultado_visitante = (TextView) holder.view.findViewById(R.id.tv_resultado_visitante);
final TextView textViewEquipo_visitante = (TextView) holder.view.findViewById(R.id.tv_equipo_visitante);
final ImageView imageViewEscudo_local = (ImageView) holder.view.findViewById(R.id.tv_escudo_local);
final ImageView imageViewEscudo_visitante = (ImageView) holder.view.findViewById(R.id.tv_escudo_visitante);
textViewJornada.setText("Jornada: "+calendario.get(position).getJornada());
textViewFecha.setText(" El "+calendario.get(position).getFecha()+" ");
textViewHora.setText("A las "+calendario.get(position).getHora()+" ");
textViewEquipo_local.setText(calendario.get(position).getEquipo_local());
textViewResultado_local.setText(" "+calendario.get(position).getResultado_local()+" - ");
textViewResultado_visitante.setText(calendario.get(position).getResultado_visitante()+" ");
textViewEquipo_visitante.setText(calendario.get(position).getEquipo_visitante());
Picasso.with(context).load(calendario.get(position).getEscudo_local())
.placeholder(holder.view.getResources()
//.getDrawable(R.drawable.ic_contact_icon)).transform(new CircleTransform()).into(imageViewImage);
.getDrawable(R.drawable.ic_contact_icon)).into(imageViewEscudo_local);
Picasso.with(context).load(calendario.get(position).getEscudo_visitante())
.placeholder(holder.view.getResources()
//.getDrawable(R.drawable.ic_contact_icon)).transform(new CircleTransform()).into(imageViewImage);
.getDrawable(R.drawable.ic_contact_icon)).into(imageViewEscudo_visitante);
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return calendario.size();
}
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view holder
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public View view;
public ViewHolder(View v) {
super(v);
view = v;
}
}
}
В котором я смог понимать тебя, как кажется, ты хочешь реализовать это:
private final View.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = null;
intent = new Intent(context, Fragment_Tabs.class);
intent.putExtra("position", position);
context.startActivity(intent);
}
Ты Определяешь layout с контейнером для Fragments: activity_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:id="@+id/content_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/style_background">
</FrameLayout>
</LinearLayout>
Сейчас, твой класс решает, что fragment он использует согласно ей posiciГіn (считая, что ты хочешь послать эту информацию) оно было бы чем-то asГ-:
public class Fragment_Tabs extends AppCompatActivity {
private FrameLayout frameLayout;
private int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
Bundle bundle = getIntent().getExtras();
if (bundle != null){
position = bundle.getInt("position");
}
frameLayout = (FrameLayout) findViewById(R.id.content_fragment);
switch(position){
case 1:
getPrimerFragment();
break;
case 2:
getSegundoFragment();
break;
default:
......
}
}
private void getPrimerFragment(){
Fragment fragment = new PrimerFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_fragment, fragment)
.commit();
}
private void getSegundoFragment(){
Fragment fragment = new SegundoFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_fragment, fragment)
.commit();
}
.....
}
Первое, что ты должен делать, состоит в том, чтобы определять один Framelayout
где он будет загружен ты Fragment
, в этом случае со Сдержанным Id:
Кликнув в статье списка ты инициализируешь переменную F (Fragment
F) и ты это заменяешь в контейнере.
Fragment f=new FragmentInicio();
FragmentManager fm = getSupportFragmentManager();
Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.contenedor);
if (oldFragment != null)
fm.beginTransaction()
.remove(oldFragment)
.addToBackStack("tag")
.replace(R.id.contenedor, f)
.commit();
else
fm.beginTransaction()
.addToBackStack("tag")
.replace(R.id.contenedor, f)
.commit();
Нуль, который не объяснял бы мне хорошо, что я хочу, состоит в том, чтобы открывать fragment в каждой статье, если я хорошо направлен......
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
switch (position) {
default:
case 0:
intent = new Intent(Adapter_Calendario.this, Fragment_Tabs.class);
startActivity(intent);
break;
case 1:
intent = new Intent(Adapter_Calendario.this, Fragment2.class);
startActivity(intent);
break;
case 2:
intent = new Intent(Adapter_Calendario.this, Fragment3.class);
startActivity(intent);
break;
}
}
}
Я Думаю, что это это, но нет способа, который бы это получал здесь, оставляю tab, который я хочу открыть.
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.example.javier.MaterialDesignApp.MainActivity;
import com.example.javier.MaterialDesignApp.R;
import com.example.javier.MaterialDesignApp.RecyclerView.RecyclerViewClasses.Jornadas;
import com.example.javier.MaterialDesignApp.Tabs.TabsAdapters.TabsDesignViewPagerAdapter;
import com.example.javier.MaterialDesignApp.Tabs.TabsUtils.SlidingTabLayout;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
public class Fragment_Tabs extends Fragment {
String urlPost;
JSONObject jsonObjectDesignPosts;
JSONArray jsonArrayDesignContent;
ArrayList<Jornadas> designs;
SwipeRefreshLayout swipeRefreshLayout;
String[] designTitle, designExcerpt, designImage, designImageFull, designContent;
int postNumber = 99;
Boolean error = false;
RecyclerView recyclerView;
RecyclerView.Adapter recyclerViewAdapter;
View view;
SharedPreferences sharedPreferences;
ViewPager pager;
TabsDesignViewPagerAdapter tabsDesignViewPagerAdapter;
SlidingTabLayout tabs;
CharSequence titles[] = {"J. Actual", "Plantilla", "Clasificacion"};
int tabNumber = titles.length;
int tabsPaddingTop;
TypedValue typedValueToolbarHeight = new TypedValue();
Toolbar toolbar;
FrameLayout statusBar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_design, container, false);
((MainActivity) getActivity()).getSupportActionBar().setTitle("INFO");
// Setup tabs
setupTabs();
return view;
}
public void setupTabs() {
tabsDesignViewPagerAdapter = new TabsDesignViewPagerAdapter(getFragmentManager(), titles, tabNumber);
pager = (ViewPager) view.findViewById(R.id.pager);
pager.setAdapter(tabsDesignViewPagerAdapter);
tabs = (SlidingTabLayout) view.findViewById(R.id.tabs);
tabs.setDistributeEvenly(false);
// Tab indicator color
tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
//TypedValue typedValue = new TypedValue();
//getActivity().getTheme().resolveAttribute(R.attr.colorAccent, typedValue, true);
//final int color = typedValue.data;
return getResources().getColor(R.color.md_white_1000);
}
});
// Setup tabs top padding
getActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, typedValueToolbarHeight, true);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
if (Build.VERSION.SDK_INT >= 19) {
tabsPaddingTop = TypedValue.complexToDimensionPixelSize(typedValueToolbarHeight.data, getResources().getDisplayMetrics()) + convertToPx(25);
}else{
tabsPaddingTop = TypedValue.complexToDimensionPixelSize(typedValueToolbarHeight.data, getResources().getDisplayMetrics());
}
}
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
if (Build.VERSION.SDK_INT >= 21) {
tabsPaddingTop = TypedValue.complexToDimensionPixelSize(typedValueToolbarHeight.data, getResources().getDisplayMetrics());
}
if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21){
tabsPaddingTop = TypedValue.complexToDimensionPixelSize(typedValueToolbarHeight.data, getResources().getDisplayMetrics()) + convertToPx(25);
}
if (Build.VERSION.SDK_INT < 19) {
tabsPaddingTop = TypedValue.complexToDimensionPixelSize(typedValueToolbarHeight.data, getResources().getDisplayMetrics());
}
}
tabs.setPadding(convertToPx(48), tabsPaddingTop, convertToPx(16), 0);
tabs.setViewPager(pager);
}
public int convertToPx(int dp) {
// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
return (int) (dp * scale + 0.5f);
}
}