Ich benutze Android Flexbox Layout. Es ist mir gelungen, dem Layout benutzerdefinierte Ansichten aus einer Liste hinzuzufügen, und ich setze Listener auf jedes Element. Das Problem besteht darin, die Position des angeklickten Objekts zu ermitteln. Ich teile meinen aktuellen Code hier.Wie bekomme ich die Position des angeklickten Elements in Flexbox Layout in Android?
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
FlexboxLayout fLayout;
final ArrayList<String> strList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
for (int i=0 ;i<30; i++){
strList.add("Item "+i);
}
fLayout = (FlexboxLayout)findViewById(R.id.flexLayout);
for(int i=0;i<strList.size();i++){
addView(strList.get(i),i);
}
fab.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.fab:
addItem();
break;
}
}
private void addItem(){
strList.add("Item "+ (strList.size()));
addView(strList.get(strList.size()-1),strList.size()-1);
}
private void addView(String string, int pos){
LayoutInflater inflater = LayoutInflater.from(this);
final View item = (View) inflater.inflate(R.layout.flow_layout_item, fLayout, false);
TextView textView = (TextView) item.findViewById(R.id.textView);
textView.setText(string);
Button btn = (Button) item.findViewById(R.id.btnClose);
FlexboxLayout.LayoutParams layoutParams = (FlexboxLayout.LayoutParams) item.getLayoutParams();
item.setLayoutParams(layoutParams);
item.setClickable(false);
/*Here I set click listener for button in custom view*/
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
fLayout.addView(item);
}
}
Wie kann ich die Position der angeklickten Elemente erhalten? Danke im Voraus.