Компоновка карусели Android с настройкой событий onClick () не работает - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь реализовать Расположение карусели (Cover Flow) в моем приложении.Я получил рабочий пример, используя приведенную ниже библиотеку.

реализация 'com.github.moondroid.coverflow: library: 1.0'

Пример ссылки: http://www.devexchanges.info/2015/11/making-carousel-layout-in-android.html

Пока все работает нормально.Но когда я пытаюсь настроить компоновку карусели для работы с событиями кликов для каждого дочернего элемента в XML-файле Inflater.Но это не поддерживает события щелчка на каждом ребенке.Это работает только для общего события клика элемента.

Я потерял 2 дня работы, чтобы попытаться выполнить это.Но это все еще в той же ситуации.

Может кто-нибудь решить мою проблему, чтобы сэкономить время.

Заранее благодарим за помощь.

Класс BaseAdapter:

public class CoverFlowAdapter extends BaseAdapter {

private ArrayList<Game> data;
private AppCompatActivity activity;

public CoverFlowAdapter(AppCompatActivity context, ArrayList<Game> objects) {
    this.activity = context;
    this.data = objects;
}

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

@Override
public Game getItem(int position) {
    return data.get(position);
}

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

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

    ViewHolder viewHolder;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.item_flow_view, null, false);

        viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.gameImage.setImageResource(data.get(position).getImageSource());
    viewHolder.gameName.setText(data.get(position).getName());
    viewHolder.gameName2.setText(data.get(position).getName());

    viewHolder.gameName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(activity, data.get(position).getName(), Toast.LENGTH_SHORT).show();
        }
    });

    viewHolder.gameName2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(activity, data.get(position).getName() + "Hello", Toast.LENGTH_SHORT).show();
        }
    });


    return convertView;
}

private View.OnClickListener onClickListener(final int position) {
    return new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final Dialog dialog = new Dialog(activity);
            dialog.setContentView(R.layout.dialog_game_info);
            dialog.setCancelable(true); // dimiss when touching outside
            dialog.setTitle("Game Details");

            TextView text = (TextView) dialog.findViewById(R.id.name);
            text.setText(getItem(position).getName());
            ImageView image = (ImageView) dialog.findViewById(R.id.image);
            image.setImageResource(getItem(position).getImageSource());

            dialog.show();
        }
    };
}


private static class ViewHolder {
    private Button gameName, gameName2;
    private ImageView gameImage;

    public ViewHolder(View v) {
        gameImage = (ImageView) v.findViewById(R.id.image);
        gameName = (Button) v.findViewById(R.id.name);
        gameName2 = (Button) v.findViewById(R.id.name2);
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...