ListView с 2 кнопками, одна кнопка нужна для FragmentTransaction - PullRequest
0 голосов
/ 21 октября 2019

Я новичок в программировании Android, моя проблема заключается в следующем.

У меня есть ListView с именем (items) и 4 разных фрагмента (tableFragment, bedFragment, DeskFragment, ChairFragment), где я реализую этот список. В списке у меня 2 кнопки с разными ролями. Я хочу, чтобы одна кнопка (избранное или ar не имеет значения) выполняла транзакцию из одного фрагмента, где у меня есть вид списка, к новому фрагменту detailsFragment и помещала информацию (например, изображение и текстовое представление из списка) в details_fragment.xml. Я ценю любые усилия, спасибо!

items.java    

public class items{

// Name of the object
private String lName;

// Costs
private String lPrice;

// Details
private String lDetails;

// Image resource id
private int lImageId;

// Buttons resource id
private int lButtonF;
private int lButtonAr;


// Constructor
public items(String ObjectName,String ObjectPrice,int ImageResourceId,int ButtonFavorites,int ButtonAr,String DetailsItem){
    lName=ObjectName;
    lPrice=ObjectPrice;
    lImageId=ImageResourceId;
    lButtonAr=ButtonAr;
    lButtonF=ButtonFavorites;
    lDetails=DetailsItem;

}




// Getters
public String getlName() { return lName; }
public String getlPrice(){ return lPrice; }
public int getlImageId(){ return lImageId; }
public int getlButtonF() { return lButtonF; }
public int getlButtonAr() { return lButtonAr; }
public String getlDetails() { return lDetails; }

}

itemsAdapter.java    

public class itemsAdapter extends ArrayAdapter<items>{



private static final String LOG_TAG = itemsAdapter.class.getSimpleName();


public itemsAdapter(Activity context, ArrayList<items> item){
    super(context,0,item);
}


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

    View listItemView = convertView;
    if(listItemView == null) {
        listItemView = LayoutInflater.from(getContext()).inflate(
                R.layout.list_item, parent, false);
    }


    items currentItems=getItem(position);


    TextView nameTextView=(TextView)listItemView.findViewById(R.id.name_item);


    nameTextView.setText(currentItems.getlName());


    TextView priceTextView=(TextView)listItemView.findViewById(R.id.price_item);


    priceTextView.setText(currentItems.getlPrice());


    ImageView iconImageView=(ImageView)listItemView.findViewById(R.id.icon_item);


    iconImageView.setImageResource(currentItems.getlImageId());


    TextView detailsView=(TextView)listItemView.findViewById(R.id.details_item);


    detailsView.setText(currentItems.getlDetails());

    // Favorites and Ar buttons
    Button buttonFavoritesItem=(Button)listItemView.findViewById(R.id.favorites_item);
    buttonFavoritesItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

    Button buttonArItem=(Button)listItemView.findViewById(R.id.ar_item);
    buttonArItem.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {

      }
    });

    return listItemView;
}

}

tableFragment.java    


public class tableFragment extends Fragment {


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

    View view = inflater.inflate(R.layout.tables_fragment, container, false);

    ArrayList<items> tables=new ArrayList<items>();
    tables.add(new items("Table1","23$",R.drawable.table1,R.id.ar_item,R.id.favorites_item,"Best table on the market, you can drink coffe or study."));
    tables.add(new items("Table2","43$",R.drawable.table2,R.id.ar_item,R.id.favorites_item,"Best table on the market, you can drink coffe or study."));
    tables.add(new items("Table3","54$",R.drawable.table3,R.id.ar_item,R.id.favorites_item,"Best table on the market, you can drink coffe or study."));
    tables.add(new items("Table4","34$",R.drawable.table4,R.id.ar_item,R.id.favorites_item,"Best table on the market, you can drink coffe or study."));
    tables.add(new items("Table5","65$",R.drawable.table5,R.id.ar_item,R.id.favorites_item,"Best table on the market, you can drink coffe or study."));

    itemsAdapter itAdapter=new itemsAdapter(this.getActivity(),tables);

    ListView listView=(ListView)view.findViewById(R.id.listview_tables);
    listView.setAdapter(itAdapter);


    return view;
}

}

detailsFragment.java    

public class detailsFragment extends Fragment {

public detailsFragment(){

}

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

    View view = inflater.inflate(R.layout.details_fragment, container, false);


    return view;
}

}

details_fragment.xml    

<FrameLayout 
android:layout_width="match_parent"
android:layout_height="500dp"
android:layout_gravity="bottom"
android:id="@+id/details_container">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

    <ImageView
    android:id="@+id/image_view_item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Name"
    android:textStyle="bold" />

    <TextView
    android:id="@+id/name_view_item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Details"
    android:textStyle="bold" />

    <TextView
    android:id="@+id/details_view_item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

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

        <Button
        android:id="@+id/ar_view_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CAMERA AR" />

        <Button
        android:id="@+id/favorites_view_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="star" />
    </LinearLayout>

</LinearLayout> 
    </FrameLayout>    

1 Ответ

0 голосов
/ 22 октября 2019

Если вы хотите переместить данные (данные изображения и текста) между фрагментами, все должно пройти базовую активность обоих фрагментов. Я думаю, что передача данных между двумя фрагментами напрямую запрещена (исправьте меня, если ошибаюсь).

...