Не могу получить нужный мне элемент из ViewHolder'a по позиции, и применить для него некие изменения (заменить background).
Собственно сам класс адаптера:
public class GridAdapter extends ArrayAdapter<String> implements IShowAdListener {
private static final String TAG = "";
ArrayList<soundList> soundlist = new ArrayList<soundList>();
ArrayList<String> str = new ArrayList<String>();
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
PerfectMediaPlayer[] mediaPlayer;
SeekBar seekBar;
ViewPager viewPager;
public static GridAdapter adap;
SoundDB sdb;
public static MainActivity av;
AppCompatActivity compatActivity;
public int posi;
public GridAdapter(Context context, int textViewResourceID, ArrayList<String> str, ArrayList<soundList> soundlist, ViewPager viewPager, SoundDB sdb) {
super(context, textViewResourceID, str);
this.soundlist = soundlist;
this.viewPager = viewPager;
this.str = str;
adap = this;
mediaPlayer = new PerfectMediaPlayer[soundlist.size()];
this.sdb = sdb;
}
public void update() {
notifyDataSetChanged();
}
@Override
public int getCount() {
return super.getCount();
}
@Override
public View getView(final int position, final View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
View v = convertView;
if (v == null) {
v = inflater.inflate(R.layout.grid_lay, parent, false);
viewHolder = new ViewHolder();
viewHolder.title = (TextView) v.findViewById(R.id.itext);
viewHolder.image = (ImageView) v.findViewById(R.id.iimg);
viewHolder.seekBar1 = (SeekBar) v.findViewById(R.id.seekbar);
viewHolder.hot_bg = (RoundedImageView) v.findViewById(R.id.hot_bg);
viewHolder.hot_img = (ImageView) v.findViewById(R.id.hot_img);
v.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) v.getTag();
}
LinearLayout fr = (LinearLayout) v.findViewById(R.id.fr);
ImageView view = (ImageView) v.findViewById(R.id.bg_gradient);
viewHolder.title.setText(soundlist.get(position).getTitle());
viewHolder.image.setImageResource(soundlist.get(position).getIcon());
int isactive = 0;
int seekvalue = 0;
viewHolder.seekBar1.setProgress(soundlist.get(position).getAddMusic());
for (int i = 0; i < MainActivity.allmedia.size(); i++) {
int ptype = MainActivity.mediaindex.get(i).getMusictype();
int pid = MainActivity.mediaindex.get(i).getMusicid();
int id = MainActivity.mediaindex.get(i).getId();
String ppath = MainActivity.mediaindex.get(i).getFile_path();
if (viewPager.getCurrentItem() != 11) {
if ((ptype == soundlist.get(position).getMusictype()) && (pid == soundlist.get(position).getMusicid())) {
isactive = 1;
seekvalue = MainActivity.mediaindex.get(i).getAddMusic();
mediaPlayer[position] = MainActivity.allmedia.get(i);
str.set(position, "pus");
}
} else {
if (id == soundlist.get(position).getId()) {
isactive = 1;
seekvalue = MainActivity.mediaindex.get(i).getAddMusic();
mediaPlayer[position] = MainActivity.allmedia.get(i);
str.set(position, "pus");
}
}
}
if (isactive == 1) {
viewHolder.seekBar1.setVisibility(View.VISIBLE);
view.setBackgroundResource(R.drawable.button_rounded_pink);
viewHolder.seekBar1.setProgress(seekvalue);
}
fr.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
seekBar = (SeekBar) v.findViewById(R.id.seekbar);
LinearLayout fr1 = (LinearLayout) v.findViewById(R.id.fr);
ImageView view = (ImageView) v.findViewById(R.id.bg_gradient);
if (seekBar.getVisibility() == View.INVISIBLE) {
if (MainActivity.allmedia.size() < 8) {
if (mediaPlayer[position] == null) {
soundlist.get(position).setAddMusic(seekBar.getProgress());
mediaPlayer[position] = PerfectMediaPlayer.create(getContext(), soundlist.get(position).getMusicid());
mediaPlayer[position].setVolume(soundlist.get(position).getAddMusic(), soundlist.get(position).getAddMusic());
MainActivity.allmedia.add(mediaPlayer[position]);
MainActivity.mediaindex.add(soundlist.get(position));
seekBar.setProgress(soundlist.get(position).getAddMusic());
}
seekBar.setVisibility(View.VISIBLE);
view.setBackgroundResource(R.drawable.button_rounded_pink);
MainActivity.notification_on_off = 1;
SoundsActivity.nplay_count = 0;
if (mediaPlayer[position] != null)
mediaPlayer[position].start();
} else {
Toast.makeText(getContext(), "", Toast.LENGTH_SHORT).show();
}
} else {
seekBar.setVisibility(View.INVISIBLE);
view.setBackgroundResource(R.drawable.button_rounded_shadow);
if (mediaPlayer[position] != null) {
mediaPlayer[position].stop();
mediaPlayer[position].release();
mediaPlayer[position] = null;
for (int i = 0; i < MainActivity.mediaindex.size(); i++) {
if (viewPager.getCurrentItem() != 9) {
if (MainActivity.mediaindex.get(i).getMusicid() == soundlist.get(position).getMusicid()) {
if (MainActivity.mediaindex.get(i).getMusictype() == soundlist.get(position).getMusictype())
MainActivity.mediaindex.remove(i);
MainActivity.allmedia.remove(i);
}
} else {
if (MainActivity.mediaindex.get(i).getFile_path() == soundlist.get(position).getFile_path()) {
if (MainActivity.mediaindex.get(i).getMusictype() == soundlist.get(position).getMusictype())
MainActivity.mediaindex.remove(i);
MainActivity.allmedia.remove(i);
}
}
}
}
}
notifyDataSetChanged();
}
});
switch (soundlist.get(position).getTitle()) {
case "1":
case "2":
case "3":
viewHolder.hot_bg.setVisibility(View.VISIBLE);
viewHolder.hot_img.setVisibility(View.VISIBLE);
fr.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
seekBar = (SeekBar) v.findViewById(R.id.seekbar);
LinearLayout fr1 = (LinearLayout) v.findViewById(R.id.fr);
ImageView view = (ImageView) v.findViewById(R.id.bg_gradient);
if (viewPager.getCurrentItem() == 12) {
if (position == (soundlist.size() - 1)) {
AddActivity.as = adap;
AddActivity.pos = position;
Intent intent = new Intent(getContext(), AddActivity.class);
getContext().startActivity(intent);
} else {
if (seekBar.getVisibility() == View.INVISIBLE) {
if (MainActivity.allmedia.size() < 8) {
if (mediaPlayer[position] == null) {
soundlist.get(position).setAddMusic(seekBar.getProgress());
mediaPlayer[position] = PerfectMediaPlayer.create(getContext(), soundlist.get(position).getFile_path());
mediaPlayer[position].setVolume(soundlist.get(position).getAddMusic(), soundlist.get(position).getAddMusic());
MainActivity.allmedia.add(mediaPlayer[position]);
MainActivity.mediaindex.add(soundlist.get(position));
seekBar.setProgress(soundlist.get(position).getAddMusic());
}
seekBar.setVisibility(View.VISIBLE);
view.setBackgroundResource(R.drawable.button_rounded_pink);
MainActivity.notification_on_off = 1;
SoundsActivity.nplay_count = 0;
if (mediaPlayer[position] != null)
mediaPlayer[position].start();
} else {
Toast.makeText(getContext(), "", Toast.LENGTH_SHORT).show();
}
} else {
seekBar.setVisibility(View.INVISIBLE);
view.setBackgroundResource(R.drawable.button_rounded_shadow);
if (mediaPlayer[position] != null) {
for (int i = 0; i < MainActivity.allmedia.size(); i++) {
if (mediaPlayer[position] == MainActivity.allmedia.get(i)) {
mediaPlayer[position].stop();
mediaPlayer[position].release();
mediaPlayer[position] = null;
MainActivity.mediaindex.remove(i);
MainActivity.allmedia.remove(i);
}
}
}
if (MainActivity.allmedia.size() == 0)
thisA.stopNotification();
}
notifyDataSetChanged();
}
} else {
if (seekBar.getVisibility() == View.INVISIBLE) {
if (MainActivity.allmedia.size() < 8) {
posi = position;
btmDialog();
} else {
Toast.makeText(getContext(), "", Toast.LENGTH_SHORT).show();
}
} else {
seekBar.setVisibility(View.INVISIBLE);
view.setBackgroundResource(R.drawable.button_rounded_shadow);
if (mediaPlayer[position] != null) {
mediaPlayer[position].stop();
mediaPlayer[position].release();
mediaPlayer[position] = null;
for (int i = 0; i < MainActivity.mediaindex.size(); i++) {
if (viewPager.getCurrentItem() != 9) {
if (MainActivity.mediaindex.get(i).getMusicid() == soundlist.get(position).getMusicid()) {
if (MainActivity.mediaindex.get(i).getMusictype() == soundlist.get(position).getMusictype())
MainActivity.mediaindex.remove(i);
MainActivity.allmedia.remove(i);
}
} else {
if (MainActivity.mediaindex.get(i).getFile_path() == soundlist.get(position).getFile_path()) {
if (MainActivity.mediaindex.get(i).getMusictype() == soundlist.get(position).getMusictype())
MainActivity.mediaindex.remove(i);
MainActivity.allmedia.remove(i);
}
}
}
}
}
notifyDataSetChanged();
}
}
});
break;
}
return v;
}
private void btmDialog() {
BottomDialog.create(thisA.getSupportFragmentManager())
.setViewListener(new BottomDialog.ViewListener() {
@Override
public void bindView(View v) {
initView(v); // // You can do any of the necessary the operation with the view
}
})
.setLayoutRes(R.layout.dialog_layout)
.setDimAmount(0.2f) // Dialog window dim amount(can change window background color), range:0 to 1,default is : 0.2f
.setCancelOutside(true) // click the external area whether is closed, default is : true
.setTag("BottomDialog") // setting the DialogFragment tag
.show();
}
@Override
public void onFinished(String s, FinishState finishState) {
if (finishState == FinishState.COMPLETED) {
if (s.equals(Id)) {
//Выполняем необходимые действия
if (mediaPlayer[posi] == null) {
soundlist.get(posi).setAddMusic(seekBar.getProgress());
mediaPlayer[posi] = PerfectMediaPlayer.create(getContext(), soundlist.get(posi).getMusicid());
mediaPlayer[posi].setVolume(soundlist.get(posi).getAddMusic(), soundlist.get(posi).getAddMusic());
MainActivity.allmedia.add(mediaPlayer[posi]);
MainActivity.mediaindex.add(soundlist.get(posi));
seekBar.setProgress(soundlist.get(posi).getAddMusic());
}
seekBar.setVisibility(View.VISIBLE);
MainActivity.notification_on_off = 1;
SoundsActivity.nplay_count = 0;
if (mediaPlayer[posi] != null)
mediaPlayer[posi].start();
// Как поменять нужному itemView из ViewHolder'a по позиции какие либо данные?
// Здесь нужно применить строчку которая ниже
view.setBackgroundResource(R.drawable.button_rounded_pink);
// но как добраться до этого view по позиции?
}
}
}
private void initView(final View view) {
final Button button1 = (Button) view.findViewById(R.id.button1);
final Button button2 = (Button) view.findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
}
private static class ViewHolder {
ImageView image;
TextView title;
SeekBar seekBar1;
RoundedImageView hot_bg;
ImageView hot_img;
}
}
В методе onFinished()
нужно добраться до элемента "view"
который определен в методе getView() :
@Override
public View getView(final int position, final View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
View v = convertView;
...
ImageView view = (ImageView) v.findViewById(R.id.bg_gradient);
...
}
@Override
public void onFinished(String s, FinishState finishState) {
if (finishState == FinishState.COMPLETED) {
if (s.equals(Id)) {
//Выполняем необходимые действия
if (mediaPlayer[posi] == null) {
soundlist.get(posi).setAddMusic(seekBar.getProgress());
mediaPlayer[posi] = PerfectMediaPlayer.create(getContext(), soundlist.get(posi).getMusicid());
mediaPlayer[posi].setVolume(soundlist.get(posi).getAddMusic(), soundlist.get(posi).getAddMusic());
MainActivity.allmedia.add(mediaPlayer[posi]);
MainActivity.mediaindex.add(soundlist.get(posi));
seekBar.setProgress(soundlist.get(posi).getAddMusic());
}
seekBar.setVisibility(View.VISIBLE);
MainActivity.notification_on_off = 1;
SoundsActivity.nplay_count = 0;
if (mediaPlayer[posi] != null)
mediaPlayer[posi].start();
// Как поменять нужному itemView из ViewHolder'a по позиции какие либо данные?
// Здесь нужно применить строчку которая ниже
view.setBackgroundResource(R.drawable.button_rounded_pink);
// но как добраться до этого view по позиции?
}
}
}
p.s: определять view не из метода getView, а в самом классе адаптера?
А как применить view.setBackgroundResource(R.drawable.button_rounded_pink);
к определенному элементу списка ViewHolder'a?
Вопрос решился перезагрузкой ViewPager'a из главной активности, и повторной установкой адаптера. По моему мнению, это не самое лучшее решение и выход из данной ситуации.
Добавил в классе GridAdapter'а в нужном для меня методе вызов MainActivity.set_viewp();
Собственно сам метод в главной активности:
public void set_viewp() {
final View decorView = getWindow().getDecorView();
viewPager = ViewFindUtils.find(decorView, R.id.pager);
activity = this;
final ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
...
viewPager.setAdapter(adapter);
tabLayout = ViewFindUtils.find(decorView, R.id.tl);
tabLayout.setViewPager(viewPager);
viewPager.setCurrentItem(0);
initToolbar();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть код на питоне для подготовки изображения к классификации:
Написал метод, который по-идее должен считывать из текстового файла по расположению (path) определенное количество символов (length), со смещением...
[Petr, Alexandr, Ivan, Dmitriy] вот что я получил в консольПочему вышли значения таким образом, а не по порядку как в ArrayList например?