2016-06-07 7 views
2

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.

Antwort

0

Während ich bin mir nicht ganz sicher, wie Sie die Position der angeklickte Elemente durch Ihre aktuelle Methode erhalten, weiß ich, dass dies leicht mit der FlexboxLayout mit einer RecyclerView erreicht werden kann.

Sie können die Position von der RecyclerView Adapter onBindViewHolder() Methode erhalten.