Hye ... Я новичок в разработке android, и я столкнулся с небольшой проблемой в проекте Android, который сейчас у меня. Коды ниже успешно возвращают список элементов в мастере activity_ticket_info.xml. Поскольку количество элементов появилось на основе цикла, как установить идентификатор на каждом отдельном элементе, который появился после этого, он может быть установлен как кликабельные элементы для намерения другому макету действий? Пожалуйста, помогите мне разобраться в этом. Большое спасибо за помощь ..Android: Как установить идентификаторы для каждого отдельного элемента в списке массивов карт и быть кликабельными?
TicketAdapter.java
package info.androidhive.navigationdrawer.activity;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import info.androidhive.navigationdrawer.R;
import info.androidhive.navigationdrawer.ticketfragments.ComboA_TicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.ComboB_TicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.ComboC_TicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.ComboD_TicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.ComboE_TicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.ComboF_TicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.DuckTourTicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.FOneSimulatorFragment;
import info.androidhive.navigationdrawer.ticketfragments.SixDCinemotionTicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.SkyCabBasicTicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.SkyCabExpressLaneTicketFragment;
import info.androidhive.navigationdrawer.ticketfragments.SkyCabPrivateVipGlassTicketFragment;
import static android.R.attr.x;
/**
* Created by user on 11/14/2016.
*/
public class TicketAdapter extends RecyclerView.Adapter<TicketViewHolder>
{
String [] name = {
"Combo A",
"Combo B",
"Combo C",
"Combo D",
"Combo E",
"Combo F",
"Combo G",
"Combo H",
"Combo I",
"Combo J",
"Combo K",
"Combo L"
};
Context context;
LayoutInflater inflater;
public TicketAdapter(Context context)
{
this.context = context;
inflater = LayoutInflater.from(context);
}
@Override
public TicketViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View v = inflater.inflate(R.layout.item_list, parent, false);
TicketViewHolder viewHolder = new TicketViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(TicketViewHolder holder, final int position)
{
holder.textTitle.setText(name[position]);
/* holder.textDesc.setText(desc[position]);*/
holder.imageView.setOnClickListener(clickListener);
holder.imageView.setTag(holder);
// holder.imageView.setId(positionId[position]);
holder.cardview.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switch (position)
{
case 0:
Intent intent0 = new Intent(v.getContext(),SkyCabBasicTicketFragment.class);
v.getContext().startActivity(intent0);
break;
case 1:
Intent intent1 = new Intent(v.getContext(),SkyCabExpressLaneTicketFragment.class);
v.getContext().startActivity(intent1);
break;
case 2:
Intent intent2 = new Intent(v.getContext(),SkyCabPrivateVipGlassTicketFragment.class);
v.getContext().startActivity(intent2);
break;
case 3:
Intent intent3 = new Intent(v.getContext(),SixDCinemotionTicketFragment.class);
v.getContext().startActivity(intent3);
break;
case 4:
Intent intent4 = new Intent(v.getContext(),DuckTourTicketFragment.class);
v.getContext().startActivity(intent4);
break;
case 5:
Intent intent5 = new Intent(v.getContext(),FOneSimulatorFragment.class);
v.getContext().startActivity(intent5);
break;
case 6:
Intent intent6 = new Intent(v.getContext(),ComboA_TicketFragment.class);
v.getContext().startActivity(intent6);
break;
case 7:
Intent intent7 = new Intent(v.getContext(),ComboB_TicketFragment.class);
v.getContext().startActivity(intent7);
break;
case 8:
Intent intent8 = new Intent(v.getContext(),ComboC_TicketFragment.class);
v.getContext().startActivity(intent8);
break;
case 9:
Intent intent9 = new Intent(v.getContext(),ComboD_TicketFragment.class);
v.getContext().startActivity(intent9);
break;
case 10:
Intent intent10 = new Intent(v.getContext(),ComboE_TicketFragment.class);
v.getContext().startActivity(intent10);
break;
case 11:
Intent intent11 = new Intent(v.getContext(),ComboF_TicketFragment.class);
v.getContext().startActivity(intent11);
break;
}
}
});
}
View.OnClickListener clickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
TicketViewHolder vholder = (TicketViewHolder) v.getTag();
int position = vholder.getPosition();
/* Toast.makeText(context,"You have choose " + position,Toast.LENGTH_LONG).show();*/
//Display toast message with each tickets caption details
Toast.makeText(context,"You have choose " + (name[position]),Toast.LENGTH_LONG).show();
}
};
@Override
public int getItemCount()
{
return name.length;
}
}
** ОБНОВЛЕНО: Я пытаюсь реализовать переключатель дела заявление, как описано выше для каждого отдельных элементов, которые необходимо перемещаться к каждому фрагменту макета и ошибок нет, но он не работает. Может ли приведенный выше оператор case switch быть правильным способом навигации по каждому элементу или есть другой лучший способ реализации? **
TicketInfoActivity.java
package info.androidhive.navigationdrawer.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import info.androidhive.navigationdrawer.R;
import static info.androidhive.navigationdrawer.R.id.name;
public class TicketInfoActivity extends AppCompatActivity
{
RecyclerView ticketView;
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ticket_info);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ticketView = (RecyclerView) findViewById(R.id.my_recycler_view);
TicketAdapter adapter = new TicketAdapter(this);
ticketView.setAdapter(adapter);
ticketView.setHasFixedSize(true);
ticketView.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == android.R.id.home)
{
// finish the activity
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}
TicketViewHolder.java
package info.androidhive.navigationdrawer.activity;
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 info.androidhive.navigationdrawer.R;
public class TicketViewHolder extends RecyclerView.ViewHolder
{
TextView textTitle,textDesc;
ImageView imageView;
CardView cardview;
public TicketViewHolder(View itemView)
{
super(itemView);
textTitle = (TextView) itemView.findViewById(R.id.list_title);
/* textDesc = (TextView) itemView.findViewById(R.id.list_desc);*/
imageView = (ImageView) itemView.findViewById(R.id.list_avatar);
cardview = (CardView) itemView.findViewById(R.id.ticket_view);
}
}
item_list.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ticket_view"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_marginBottom="16dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#C5CAE9"
android:foreground="?attr/selectableItemBackground"
android:theme="@style/ThemeOverlay.AppCompat.Light">
<RelativeLayout
android:layout_width="match_parent"
android:gravity="center"
android:paddingTop="16dp"
android:layout_height="match_parent">
<!-- Icon -->
<ImageView
android:id="@+id/list_avatar"
android:layout_width="match_parent"
android:layout_height="85dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_tickets_info_color_48dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<!-- Title -->
<TextView
android:id="@+id/list_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Product Description Goes Here... "
android:textColor="#000000"
android:textStyle="bold"
android:textAppearance="?attr/textAppearanceListItem"
android:textSize="18sp"
android:gravity="center_horizontal"
android:layout_below="@+id/list_avatar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="15dp"/>
<!-- Description -->
</RelativeLayout>
</android.support.v7.widget.CardView>
activity_ticket_info.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_ticket_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="info.androidhive.navigationdrawer.activity.TicketInfoActivity">
<!--<include layout="@layout/actionbar_layout" />-->
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="16dp"
android:paddingTop="16dp"
android:scrollbars="vertical"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
, где вы хотите и идентификатор, который вы хотите посмотреть, вы уже получаете нажмём от recyler адаптера – Vadivel
@ Vadivel, если вы запустите коды, вы найдете список комбинированных элементов, которые будут успешно указаны в файле activity_ticket_info.xml с тостами. Тогда проблема заключается в том, как назначить каждому комбинированным элементам ID, потому что я хочу сделать каждый элемент кликабельным для другого макета активности? – mille
У вас есть позиция из комбо-объекта, затем используйте позицию для перемещения другого действия и пропустите позицию, когда вы выбираете комбо-элемент и выполняете функциональность, что хотите в другой деятельности. В противном случае вы можете создать массив идентификаторов. – Vadivel