单击列表视图项按钮后显示对话框
Make dialog appear after listview item button click
我有一个应用程序根据数据库查询加载列表视图。在每个列表视图项中都有一个文本视图和一些按钮。所以我创建了一个自定义适配器。我的问题是,我试图在单击列表视图中的按钮时显示一个对话框,但我不知道如何从列表视图适配器调用片段管理器。
DanceAdapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
final OneDancer oneDancer = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
//Sign-In Activity
if(type==1) {
}else if (type==2)
{
Log.v("DancerAdapter","item_dj_dancer Loaded");
}
//VIP/Dances Adapter
else if(type==3) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_services, parent, false);
final Button button4 = (Button)convertView.findViewById(R.id.button4);
final TextView counterTextView = (TextView)convertView.findViewById(R.id.textView10);
final Button button6 = (Button)convertView.findViewById(R.id.button6);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = new SignInActivity.ConfirmDancerDialog();
newFragment.show(new getFragmentManager(), "Dancer Confirmed");
button4.setVisibility(View.INVISIBLE);
button6.setVisibility(View.VISIBLE);
counterTextView.setVisibility(View.VISIBLE);
}
});
}
}
这是 activity 中用于填充列表视图的方法的代码。
服务。 java
// Parsing of dancers
public void parseDancerList(String response) {
Log.v("SignInActivity","parseDancerList");
XMLParser parser = new XMLParser();
Document doc = parser.getDomElement(response); // getting DOM element
NodeList nl = doc.getElementsByTagName("DANCERS");
DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,3);
Log.v("response ", "Dancer Count " + nl.getLength());
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
Element e = (Element) nl.item(i);
Log.v("response ", "Dancers " + parser.getValue(e, "NAME"));
OneDancer newDancer = new OneDancer(parser.getValue(e,"POSITION"),
parser.getValue(e,"NAME"),
parser.getValue(e,"AVAILABLE"),
null,
null,
null,
null,
null,
null);
adapter.addAll(newDancer);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
好吧,我猜你只是累了才不知道该怎么做,因为这真的很简单,至少如果我没有遗漏任何东西而且我自己也不累 xd。这是代码:
在activity中:
DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,3, getSupportFragmentManager());
在你的 DancerAdapter 中:
private static FragmentManager fragmentManager;
public DancerAdapter(...,FragmentManager fragmentManager) {
...
this.fragmentManager = fragmentManager;//now you have a reference to it
}
我有一个应用程序根据数据库查询加载列表视图。在每个列表视图项中都有一个文本视图和一些按钮。所以我创建了一个自定义适配器。我的问题是,我试图在单击列表视图中的按钮时显示一个对话框,但我不知道如何从列表视图适配器调用片段管理器。
DanceAdapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
final OneDancer oneDancer = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
//Sign-In Activity
if(type==1) {
}else if (type==2)
{
Log.v("DancerAdapter","item_dj_dancer Loaded");
}
//VIP/Dances Adapter
else if(type==3) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_services, parent, false);
final Button button4 = (Button)convertView.findViewById(R.id.button4);
final TextView counterTextView = (TextView)convertView.findViewById(R.id.textView10);
final Button button6 = (Button)convertView.findViewById(R.id.button6);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = new SignInActivity.ConfirmDancerDialog();
newFragment.show(new getFragmentManager(), "Dancer Confirmed");
button4.setVisibility(View.INVISIBLE);
button6.setVisibility(View.VISIBLE);
counterTextView.setVisibility(View.VISIBLE);
}
});
}
}
这是 activity 中用于填充列表视图的方法的代码。
服务。 java
// Parsing of dancers
public void parseDancerList(String response) {
Log.v("SignInActivity","parseDancerList");
XMLParser parser = new XMLParser();
Document doc = parser.getDomElement(response); // getting DOM element
NodeList nl = doc.getElementsByTagName("DANCERS");
DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,3);
Log.v("response ", "Dancer Count " + nl.getLength());
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
Element e = (Element) nl.item(i);
Log.v("response ", "Dancers " + parser.getValue(e, "NAME"));
OneDancer newDancer = new OneDancer(parser.getValue(e,"POSITION"),
parser.getValue(e,"NAME"),
parser.getValue(e,"AVAILABLE"),
null,
null,
null,
null,
null,
null);
adapter.addAll(newDancer);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
好吧,我猜你只是累了才不知道该怎么做,因为这真的很简单,至少如果我没有遗漏任何东西而且我自己也不累 xd。这是代码:
在activity中:
DancerAdapter adapter = new DancerAdapter(this,oneDancerArrayList,3, getSupportFragmentManager());
在你的 DancerAdapter 中:
private static FragmentManager fragmentManager;
public DancerAdapter(...,FragmentManager fragmentManager) {
...
this.fragmentManager = fragmentManager;//now you have a reference to it
}