私はHorizontalListView.javaに次のメソッドを実装する際の問題を解決しました。
これは、Action_UPを検出するために使用されました(ユーザーが選択したビューから指を離し、相対レイアウトをペイントしてデフォルトの色に戻した場合)。
@Override
public boolean onTouchEvent(MotionEvent event) {
if(habilitar){
if (event.getAction() == android.view.MotionEvent.ACTION_UP ||event.getAction() == android.view.MotionEvent.ACTION_CANCEL){
for(int i=0;i<getChildCount();i++){
View child = getChildAt(i);
if (isEventWithinView2(event, child)) {
if(mOnItemUnSelectedListener != null){
mOnItemUnSelectedListener.onItemUnSelected(child);
}
break;
}
if(mOnItemUnSelectedListener != null && child != null){
mOnItemUnSelectedListener.onItemUnSelected(child);
}
}
}
}
return true;
}
mOnGestureジェスチャー検出器宣言内で、この機能をonDownメソッドに追加しました。これにより、ユーザーがビューを押したときにコンテンツを保持している選択したアイテムの相対レイアウトをペイントできます。
for(int i=0;i<getChildCount();i++){
View child = getChildAt(i);
if (isEventWithinView2(e, child)) {
if(mOnItemSelected != null){
mOnItemSelected.onItemSelected(HorizontalListView.this, child, mLeftViewIndex + 1 + i, mAdapter.getItemId( mLeftViewIndex + 1 + i ));
}
break;
}
}
次に、いくつかのリスナーを追加して、アダプターが押されたビューをペイントできるようにしました。選択解除されたリスナー用に、次のインターフェイスを実装しました。
private OnItemUnSelectedListener mOnItemUnSelectedListener;
public void setOnItemUnSelectedListener(OnItemUnSelectedListener listener ){
mOnItemUnSelectedListener = listener;
}
public interface OnItemUnSelectedListener{
public void onItemUnSelected(View v);
}
アイテム選択リスナーには、クラスですでに定義されているリスナーを使用しました。
private OnItemSelectedListener mOnItemSelected;
最後に私のアダプターでリスナーを設定しました:
HorizontalListView listview = (HorizontalListView) retval.findViewById(R.id.listviewH);
listview.setOnItemSelectedListener(this);
listview.setOnItemUnSelectedListener(this);
ユーザーがビューを押しているかどうかに応じて、レイアウトの色を設定します
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
if(arg1.findViewById(R.id.marcoNota) != null){
arg1.findViewById(R.id.marcoNota).setBackgroundColor(Color.WHITE);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemUnSelected(View v) {
if(v.findViewById(R.id.marcoNota) != null){
v.findViewById(R.id.marcoNota).setBackgroundColor(Color.BLACK);
}
}
私はそれが非常に具体的な質問であることを知っていますが、ここでは誰かが同じことをする必要があるかどうかです。