2017-12-02 7 views
0

このhttps://github.com/ISchwarz23/SortableTableViewライブラリを使用してカスタムTableViewにデータを表示しています。私がしたいのは、ユーザーがその行を編集または削除するための2つの新しいボタン(行がどこにあるか)をポップアップするためにテーブルの1つの行をクリックするときです。ユーザーがカスタムTableView行をクリックすると2つの新しいボタンをポップアップする方法は?

FragmentTableUsers.class

public class FragmentTableUsers extends Fragment { 
View v; 
ArrayList<User> allUsers; 
private static final String[] TABLE_HEADERS = { "Ime", "Prezime"}; 

public FragmentTableUsers() { 
    // Required empty public constructor 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    DataBaseHelper helper = new DataBaseHelper(getActivity()); 
    allUsers = helper.getAllUsers(); 

    v = inflater.inflate(R.layout.fragment_fragment_add_user, container, false); 

    TableView tableView = (TableView<String[]>) v.findViewById(R.id.tableView); 
    tableView.setColumnCount(2); 
    tableView.setDataAdapter(new UserTableDataAdapter(getActivity(), allUsers)); 
    SimpleTableHeaderAdapter simpleHeader = new SimpleTableHeaderAdapter(getActivity(), TABLE_HEADERS); 
    simpleHeader.setTextColor(Color.WHITE); 
    simpleHeader.setPaddingTop(8); 
    simpleHeader.setPaddingBottom(8); 

    tableView.setHeaderAdapter(simpleHeader); 
    tableView.setHeaderElevation(5); 
    int colorEvenRows = getResources().getColor(R.color.white); 
    int colorOddRows = getResources().getColor(R.color.et_grey); 
    tableView.setDataRowBackgroundProvider(TableDataRowBackgroundProviders.alternatingRowColors(colorEvenRows, colorOddRows)); 
    tableView.addDataClickListener(new UserClickListener()); 
    return v; 
} 
private class UserClickListener implements TableDataClickListener<User> { 
    @Override 
    public void onDataClicked(int rowIndex, User clickedData) { 
     String clickedCarString = clickedData.getName() + " " + clickedData.getSurname(); // HERE IS CODE WHEN USER CLICK ON ROW 
    } 
} 

TableAdapter.class:

class UserTableDataAdapter extends TableDataAdapter<User> { 

public UserTableDataAdapter(Context context, List<User> data) { 
    super(context, data); 
} 

@Override 
public View getCellView(int rowIndex, int columnIndex, ViewGroup parentView) { 
    User user = getRowData(rowIndex); 
    View renderedView = null; 

    switch (columnIndex) { 
     case 0: 
      renderedView = renderUserName(user); 
      break; 
     case 1: 
      renderedView = renderSurName(user); 
    } 
    return renderedView; 
} 

private View renderUserName(final User user) { 
    return renderString(user.getName()); 
} 

private View renderSurName(final User user) { 
    return renderString(user.getSurname()); 
} 

private View renderString(final String value) { 
    final TextView textView = new TextView(getContext()); 
    textView.setText(value); 
    textView.setTextColor(Color.BLACK); 
    textView.setPadding(20, 10, 20, 10); 
    textView.setTextSize(14); 
    return textView; 
} 

FragmentTableユーザーのxml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.group.digit.razvoj.appointment.user.FragmentTableUsers"> 

<!-- TODO: Update blank fragment layout --> 

<LinearLayout 
    android:id="@+id/mainLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="@dimen/between_margin" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/tableViewLaayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <de.codecrafters.tableview.TableView xmlns:table="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/tableView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      table:tableView_columnCount="2" 
      table:tableView_headerColor="@color/cyan" /> 

    </LinearLayout> 

</LinearLayout> 

答えて

0

最も簡単な解決策は、追加することはおそらくありエレメントのonclickリスナー。ボタンのプロパティを可視に設定します。

これは過去にこれをどのように行ったかのコード例です。

fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      enrolling=true; 
      attendance.setVisibility(View.GONE); 
      lin.setVisibility(View.VISIBLE); 
      fname.setText(""); 
      lname.setText(""); 
      id_view.setText("Scan Card"); 
      Snackbar.make(view, "Scan To Enroll New User", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

.setVisibility(View.*some visibility property*)は必要な行です。

+0

私はレイアウトを消したくないです。ユーザーがTableViewの行をクリックしたときに別のものを表示したい。 –

関連する問題