2017-05-30 4 views
0

Wenn ich ein Element meiner ListView während 2 oder 3 Sekunden auswähle und dann meinen Finger zu einem anderen Element bewege und gedrückt drücke, bleibt das erste ausgewählte Element die ganze Zeit markiert. Wie kann ich das reparieren ???Wenn ich einen ListView-Eintrag drücke, markieren Sie [Android]

Danke !!!

ich vergaß zu sagen, verwendet die languaje ist Kotlin:

lvLevels.setOnItemClickListener { adapterView, v, i, l -> 
     Log.i(TAG, "${mapLevels[levelsNameList[i]]}") 
     GlobalStatus.level = mapLevels[levelsNameList[i]] 
     Log.i(TAG, "Prueba level -> ${GlobalStatus.level}") 
     GlobalStatus.levelNumber = i + 1 

     val intent = Intent([email protected], TheoryActivity::class.java) 
     startActivity(intent) 
    } 

Die apdapter:

class LevelAdapter(context: Context?, levels: List<String>) : ArrayAdapter<String>(context, R.layout.listitem_levels, levels) { 

val TAG = javaClass.simpleName 
val levelsList: List<String> = levels 
private val LEVEL = " LEVEL " 

override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { 
    val inflater = LayoutInflater.from(context) 
    var item: View? = convertView // !! 

    if (convertView == null) { 
     item = inflater.inflate(
       if (position < GlobalStatus.user!!.userLevel!!) { 
        R.layout.listitem_levels 
       } else { 
        R.layout.listitem_level_disable 
       }, 
       null 
     ) 
    } 

    item!!.lblLevelNumber.text = "$LEVEL ${(position + 1)}" 
    item.lblLevelDescription.text = levelsList[position] 

    return item 
} 

override fun isEnabled(position: Int) = (position < GlobalStatus.user!!.userLevel!!) 

}

+0

Set 'cacheColorHint' zu' transparent'. – Wizard

Antwort

0

Es klingt wie Sie entweder OnClickListener oder onTouchListener verwenden zu handhaben Ihre Berührungsereignisse. Bitte geben Sie von nun an einen Code an. Ich werde das bearbeiten, wenn Sie Code bereitstellen.

Wenn Sie onTouchListener verwenden, was Sie wahrscheinlich sein sollten, sollten Sie sicherstellen, dass "true" zurückgegeben wird, wenn Ihre Aktion MotionEvent.ACTION_DOWN ist, und wenn MotionEvent.ACTION_UP ist, möchten Sie false zurückgeben. Dieser boolesche Wert sagt im Grunde: "Kümmere ich mich um zukünftige Berührungsereignisse?". Innerhalb dieser beiden Bedingungen möchten Sie Ihren Hintergrund entsprechend einstellen.

0

Try unten Code:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      //implement what ever you want 
      return true; 
     } 
    }); 
Verwandte Themen