我正在使用填充了复合组件的列表视图开发一个小应用程序。该组件有两个文本视图和一个按钮。其中一个文本视图是不可见的,当单击该按钮时,它应该出现。我可以显示列表,但单击按钮时无法显示textview。 这是组件的xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:text="@+id/TextView01"
android:id="@+id/placeNamwView"
android:layout_height="wrap_content"
android:textSize="30dp"
android:layout_width="wrap_content"
android:maxWidth="250dp">
</TextView>
<Button
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/placeNamwView"
android:layout_width="wrap_content"
android:id="@+id/Button01"
android:text="More">
</Button>
<EditText
android:layout_below="@+id/placeNamwView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@+id/TextView01"
android:id="@+id/placeAddressView"
android:textSize="20dp"
android:textColor="#FFFF0000"
android:maxWidth="250dp">
</EditText>
</RelativeLayout>
这是填充列表的ArrayAdapter:
public class AddressAdapter extends ArrayAdapter<Item> {
int resource;
RelativeLayout placeView;
EditText addressText;
public AddressAdapter(Context _context, int _resource, List<Item> _items) {
super(_context, _resource, _items);
resource = _resource;
}
private OnClickListener buttonClick = new OnClickListener() {
public void onClick (View v) {
int i = placeView.findViewById(R.id.stub_import).getVisibility();
visibility(i);
}
}
private void visibility(int i) {
//
TODO Auto-generated method stub
switch(i) {
case(View.GONE):
addressText.setVisibility(View.VISIBLE);
break;
case(View.VISIBLE):
addressText.setVisibility(View.GONE);
break;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Item item = getItem(position);
String name = item.getName();
String address = item.getAddress();
if (convertView == null) {
placeView = new RelativeLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, placeView, true);
}
else
{
placeView = (RelativeLayout) convertView;
}
TextView nameText = (TextView)placeView.findViewById(R.id.placeNamwView);
Button button = (Button)placeView.findViewById(R.id.Button01);
addressText = (EditText)placeView.findViewById(R.id.placeAddressText);
button.setOnClickListener(buttonClick);
nameText.setText(name);
addressText.setText(address);
return placeView;
}
}
答案 0 :(得分:0)
您为每一行使用相同的placeView
数据成员。因此,单击按钮将更改TextView
处理的最后一行中的getView()
可见性,而不是包含用户点击按钮的行。
Here is a sample project来自我的一本书,其中显示了ListView
中使用交互式小部件(在本例中为RatingBar
)。就我而言,我使用了getTag()
和setTag()
。在您的情况下,您只需致电getParent()
上的Button
即可开始导航,找到合适的TextView
。
答案 1 :(得分:0)
我认为您应该在条件
中使用以下内容 INVISIBLE
而不是
GONE
试试吧!