私はとListView
として行を持っています。
今、私は最初のアイテムをクリックしたとき、つまり(position==0) をクリックしたとき、それより下のすべての行が表示されます。
どうすればこれを達成できますか..?
Androidではデフォルトでオフになっています。これは、最初は 1 行のみを表示することを意味し、オンにすると、残りのすべての行が最初の行の下に追加され、その逆も同様です。
私が使用した次のコード:
TextView
Switch
Switch
Switch
switch
switch
public class MainActivity extends Activity
{
ListView listView;
private static final String[] items=
{ "Allow Billing Details Capture", "Address1", "Address2", "City", "State", "Zip",
"Country", "Email","Phone" };
static int i;
RelativeLayout Rlmain;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
final ArrayList<String> data=new ArrayList<String>(Arrays.asList(items));
final TestAdapter adapter=new TestAdapter(this,R.layout.fieldlist,data);
listView=(ListView)findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
private void FillList()
{ ArrayList<String> currentdata=new ArrayList<String>();
ArrayList<String> data=new ArrayList<String>(Arrays.asList(items));
for(int i=1;i<data.size();i++)
{
currentdata.add(data.get(i));
}
TestAdapter adapter=new TestAdapter(this,R.layout.fieldlist,currentdata);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
private void fillone()
{
ArrayList<String> currentdata=new ArrayList<String>();
ArrayList<String> data=new ArrayList<String>(Arrays.asList(items));
currentdata.add(data.get(0));
TestAdapter adapter=new TestAdapter(this,R.layout.fieldlist,currentdata);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
public class TestAdapter extends ArrayAdapter<String> {
Context con;
ArrayList<String> listdata;
public TestAdapter(Context context, int textViewResourceId,ArrayList<String> myitem)
{
super(context, textViewResourceId, myitem);
this.con = context;
this.listdata = myitem;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//final View v=convertView;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.fieldlist, null);
}
TextView data = (TextView) convertView.findViewById(R.id.VTItemTextView);
Switch check=(Switch)convertView.findViewById(R.id.Vtcheck);
if(position==0 && check.isChecked())
{
FillList();
notifyDataSetChanged();
}
else
{
fillone();
notifyDataSetChanged();
}
check.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if(isChecked && position==0 )
{
FillList();
notifyDataSetChanged();
}
else
{
fillone();
notifyDataSetChanged();
}
}
});
data.setText(listdata.get(position));
return convertView;
}
}
}
最初は1行しか表示されていませんが、そのスイッチをオンにしても変化しません。