Привет, я разрабатываю приложение для Android-устройства.
И я пытаюсь реализовать Keylistener в Listview.
Но если в моем списке есть много элементов, мой Keylistener не вызывается приложениями, а использует список ключевых слов по умолчанию для Listview. У вас есть какие-либо сведения об этой ситуации?
Я продолжаю этот путь, чтобы связать keylistner с моим списком.Использование андроидного списка с keylistener
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.tv_fragment_channel_list, container);
adapter = new AdapterChannelList(getActivity(), ((List<Category>) User.getInstance().getTV()).get(0).getContent());
list = (ListView) v.findViewById(R.id.channelListview);
list.setAdapter(adapter);
list.setOnKeyListener(new OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
{
((MainActivity) getActivity()).loadVideo(mLiveTv.get(
ListId).getUrl(),"TV");
getZappingBannerFragment().loadChannelInfo(mLiveTv.get(
ListId).getId(), true);
((MainActivity) getActivity()).findViewById(R.id.tvpannel).setVisibility(View.INVISIBLE);
MainActivity.shouldfocus = R.id.videoView1;
return true;
}
case KeyEvent.KEYCODE_DPAD_DOWN:
{
if (ListId >= /*6*/mLiveTv.size() -1)
return true;
if (ListPos == 10)
{
reduce(ListPos);
}
else if (ListId > 10)
reduce(ListPos);
else
reduce(ListId);
ListId++;
ListPos++;
if (ListPos == 10)
{
reduce(ListPos - 1);
enlarge(ListPos);
list.setSelectionFromTop(ListId, 0);
ListPos = 0;
}
else if (ListId > 10)
enlarge(ListPos);
else
enlarge(ListId);
//list.setSelectionFromTop(ListId, 0);
//list.scrollBy(0, 250);
return true;
}
case KeyEvent.KEYCODE_DPAD_UP:
{
// list.scrollBy(0, -250);
if (ListId > 0)
{
reduce(ListId);
ListId--;
ListPos--;
}
if (ListPos < 0)
{
enlarge(ListId);
list.setSelectionFromTop(ListPos, 0);
ListPos = 0;
}
else
{
enlarge(ListId);
}
//list.setSelectionFromTop(ListId, 0);
//list.setSelection(ListId);
return true;
}
case KeyEvent.KEYCODE_BACK:
{
//getZappingBannerFragment().justShow();
((MainActivity) getActivity()).findViewById(R.id.tvpannel).setVisibility(View.INVISIBLE);
((MainActivity) getActivity()).findViewById(R.id.menu_principal).setVisibility(View.VISIBLE);
MainActivity.shouldfocus = R.id.menu_principal;
return true;
}
}
}
return true;
}
});
return v;
}
Спасибо, что это много помогает, Но я не понимаю, почему он работает, когда у меня мало элементов и почему он не работает, когда у меня есть больше элементов. – Armakorhall
Я не уверен в этом, но я думаю, когда вы просматриваете свой список, ваш взгляд с помощью keyListener перерабатывается. Это может сделать бесполезным ваш keyListener. – ACengiz
Но делать так, что это очень Ressource consumming? – Armakorhall