Я пытаюсь сделать горизонтальный прокручиваемый просмотр изображений с помощью прослушивателя OnClick, прикрепленного к каждому, который отправляет пользователя на новую веб-страницу. Я сделал очень хорошо с вертикальным списком, но теперь хочу, чтобы он был горизонтальным. Как я могу это сделать. Я пробовал использовать recyclerView, как Android, но я не могу заставить его принять адаптер.использовать RecyclerView для создания горизонтального представления списка, основанного на адаптере списка абонентов Android
Это дает мне эту ошибку: вид переработчик не может быть применен к CustomeListAdpater, а также, когда я пытаюсь добавить OnClick он говорит, что не может решить метод setOnClickListern (анонимный android.widget.AdapterView.OnItemClickListener())
Итак, вот что я до сих пор;
Вот Линейный LayoutManager
LinearLayoutManager layoutManager= new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false);
recyclerView = (RecyclerView)findViewById(R.id.promotionHolder);
recyclerView.setLayoutManager(layoutManager);
и вот где я назначу адаптер список клиентов с точки зрения рециркуляции
private void fillListView(ArrayList<ListItem> listData)
{
final ListView listView = (ListView) findViewById(R.id.custom_list);
listView.setAdapter(new CustomListAdapter(this, listData));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//here is a method to either send the user to the poduct page
//or to the main page in the app
//open a new activity and close this one down
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ListItem promoData = (ListItem) listView.getItemAtPosition(position);
//lest open up the corrisponding webpage
Intent reDirect = new Intent();
reDirect.setAction(Intent.ACTION_VIEW);
reDirect.addCategory(Intent.CATEGORY_BROWSABLE);
reDirect.setData(Uri.parse(promoData.getPathUrl()));
String newUrl = Uri.parse(promoData.getPathUrl()).toString();
if (newUrl.contains("http")) {
startActivity(reDirect);
} else {
//if not do nothing
Log.d("Path URL: ", " is null");
}
}
});
recyclerView.setAdapter(new CustomListAdapter(this, listData));
recyclerView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//here is a method to either send the user to the poduct page
//or to the main page in the app
//open a new activity and close this one down
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ListItem promoData = (ListItem) listView.getItemAtPosition(position);
//lest open up the corrisponding webpage
Intent reDirect = new Intent();
reDirect.setAction(Intent.ACTION_VIEW);
reDirect.addCategory(Intent.CATEGORY_BROWSABLE);
reDirect.setData(Uri.parse(promoData.getPathUrl()));
String newUrl = Uri.parse(promoData.getPathUrl()).toString();
if (newUrl.contains("http")) {
startActivity(reDirect);
} else {
//if not do nothing
Log.d("Path URL: ", " is null");
}
}
});
}
я сохранил оригинальную Listview в там, потому что он прекрасно работает как пример того, что я делал с этим.
Это мой XML-файл
<android.support.v7.widget.RecyclerView
android:id="@+id/promotionHolder"
android:layout_below="@+id/logout"
android:layout_width="match_parent"
android:layout_height="240dp"
android:orientation="horizontal"
android:layoutManager = "android.support.v7.widget.LinearLayoutManager"
>
</android.support.v7.widget.RecyclerView>
Это мой пользовательский список адаптер
public class CustomListAdapter extends BaseAdapter{
private ArrayList<ListItem> listData;
private LayoutInflater layoutInflater;
public CustomListAdapter(Context context, ArrayList<ListItem> listData) {
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
holder = new ViewHolder();
holder.imageView = (ImageView) convertView.findViewById(R.id.thumbImage);
holder.labelView = (TextView)convertView.findViewById(R.id.label);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
ListItem newsItem = listData.get(position);
//Check to see if there is a lable attached to the image
if(newsItem.getLableTitle().equals("null"))
{
holder.labelView.setText("");
}else
{
holder.labelView.setText(newsItem.getLableTitle());
}
if (holder.imageView != null) {
new ImageDownloaderTask(holder.imageView).execute(newsItem.getUrl());
}
return convertView;
}
static class ViewHolder {
ImageView imageView;
TextView labelView;
}
}
И это list_row_layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="8dp"
android:padding="1dp"
android:background="#000000"
>
<ImageView
android:id="@+id/thumbImage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#000000"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/label"
android:layout_below="@id/thumbImage"
android:layout_marginTop="1dp"
android:layout_centerHorizontal="true"
android:textColor="#ffffff"
android:textSize="8pt"
/>
Я собираюсь сказать ваше право и что мне придется все переделать с нуля. Я не думаю, что могу перепрофилировать проект, который использовал. Большое спасибо – MNM
Переключение на ** много ** классов RecyclerView ('Adapter',' ViewHolder' и т. Д.) Сначала кажется странным/сложным, но позже делает вещи более гладкими. Вы не хотите возвращаться. :-) –