- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制作了一个自定义 ListView ,并将其放在 ListFragment
中。我能够在我的 ListViewAdapter
类中选择行。但我想让它们从扩展 ListFragment
的 CompraFragment
类中选择,并通过选择一行我想启动相关详细信息页面。所以我有两个问题:
1) 如何使我的 ListFragment 类具有可选择的行,然后通过 Intent 或 fragment 管理器启动详细信息页面。第二个问题来了;
2) 我应该将详细信息页面作为 Fragmet
还是 Activity
启动(考虑到我已经有一个幻灯片菜单可以启动 Fragments
和/或 ListFragments
。所以基本上是一个 3 级分页系统(菜单 -> 项目 -> 项目详细信息))
这是我的代码:
fragment_compra.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/android:list"
android:layout_width="match_parent"
android:descendantFocusability="blocksDescendants"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
我的自定义 listView 行:listview_item_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:clickable="false"
android:focusable="false"
android:padding="5dip" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/relativeLayout"
android:clickable="false"
android:focusable="false"
android:background="@drawable/list_selector" >
<!-- Image dell'ogetto -->
<ImageView
android:id="@+id/ic_thumbnail"
android:layout_width="95dip"
android:layout_height="95dip"
android:clickable="false"
android:focusable="false"
android:src="@drawable/ic_thumbnail" />
<!-- Data di scadenza-->
<TextView
android:id="@+id/tvScadenza"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/ic_thumbnail"
android:layout_toRightOf="@+id/ic_thumbnail"
android:gravity="center"
android:textColor="#040404"
android:typeface="sans"
android:textSize="15sp"
android:clickable="false"
android:focusable="false"
android:textStyle="italic"/>
<ProgressBar
android:id="@+id/hProgressBar"
style="@style/CustomProgressBar"
android:progressDrawable="@drawable/progressbar_color"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvScadenza"
android:layout_alignBottom="@+id/ic_thumbnail"
android:clickable="false"
android:focusable="false" />
<!-- Prezzo -->
<TextView
android:id="@+id/tvPrezzo"
android:layout_width="match_parent"
android:layout_height="75dp"
android:layout_below="@id/tvScadenza"
android:textColor="#343434"
android:textSize="30sp"
android:gravity="center"
android:clickable="false"
android:focusable="false"
android:layout_toRightOf="@+id/ic_thumbnail" />
<!-- Followers -->
<TextView
android:id="@+id/tvFollowers"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_below="@+id/tvPrezzo"
android:textColor="#343434"
android:textSize="20sp"
android:gravity="center"
android:background="@color/light_grey"
android:layout_toRightOf="@+id/ic_thumbnail"
android:clickable="false"
android:focusable="false"
android:text="@string/followers" />
<!-- Bottone Segui -->
<Button
android:id="@+id/btnSegui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
android:background="@drawable/ic_segui_m"
android:layout_alignBottom="@+id/tvFollowers" />
</RelativeLayout>
</LinearLayout>
ListViewAdapter 类
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.prjma.lovertech.R;
import com.prjma.lovertech.model.Item;
public class ListViewAdapter extends ArrayAdapter<String> {
private static LayoutInflater inflater = null;
public Context context;
public int layoutResourceId;
public ArrayList<HashMap<String, Object>> items;
public Bitmap icon;
//public ImageLoader imageLoader;
public ListViewAdapter(Context context, int listviewItemRow, ArrayList<HashMap<String, Object>> items, Bitmap icon) {
// TODO Auto-generated constructor stub
super(context, listviewItemRow);
this.items = items;
this.context = context;
this.icon = icon;
}
public int getCount() {
return items.size();
}
public Item getItem(Item position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.listview_item_row, null);
HashMap<String, Object> item = items.get(position);
if (item != null) {
ImageView listImage = (ImageView)row.findViewById(R.id.ic_thumbnail);
TextView scadenza = (TextView)row.findViewById(R.id.tvScadenza);
TextView prezzo = (TextView)row.findViewById(R.id.tvPrezzo);
TextView followers = (TextView)row.findViewById(R.id.tvFollowers);
ProgressBar hProgressBar = (ProgressBar)row.findViewById(R.id.hProgressBar);
if (listImage != null) {
listImage.setImageBitmap(icon);
listImage.setImageBitmap((Bitmap) item.get("pic1m"));
}
if (scadenza != null) {
scadenza.setText((CharSequence) item.get("scadenza"));
}
if (prezzo != null) {
prezzo.setText((CharSequence) item.get("prezzo"));
}
if (followers != null) {
followers.setText((CharSequence) item.get("followers"));
}
if (hProgressBar != null) {
hProgressBar.setProgress((Integer) item.get("coefficient"));
}
}
//row.onListItemClick(new OnItemClickListener1());
row.setOnClickListener(new OnItemClickListener(position));
return row;
}
private class OnItemClickListener implements OnClickListener {
private int mPosition;
private OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View arg0) {
Log.i("onListItemClickList", "Item clicked: " + mPosition);
Toast.makeText(context, "Message " + Integer.toString(mPosition), Toast.LENGTH_SHORT).show();
}
}
}
compraFragment 类
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListFragment;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
import com.prjma.lovertech.R;
import com.prjma.lovertech.adapter.ListViewAdapter;
import com.prjma.lovertech.util.MVPFunctions;
public class CompraFragment extends ListFragment {
public ListView listView;
public ListViewAdapter adapter;
/**
* Keep track of the login task to ensure we can cancel it if requested.
*/
private DownloadTask mDownloadTask = null;
public ArrayList<HashMap<String, Object>> items;
public Bitmap icon;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//View rootView = inflater.inflate(R.layout.fragment_compra, false);
View rootView = inflater.inflate(R.layout.fragment_compra, container, false);
// now you must initialize your list view
listView = (ListView) rootView.findViewById(android.R.id.list);
mDownloadTask = new DownloadTask();
mDownloadTask.execute((Void) null);
return rootView;
}
/**
* Represents an asynchronous login/registration task used to authenticate
* the user.
*/
public class DownloadTask extends AsyncTask<Void, Void, Boolean> {
private ProgressDialog progressDialog;
@Override
protected Boolean doInBackground(Void... params) {
// TODO: attempt authentication against a network service.
//prendi tutti gli id dal webserver
ArrayList<Long> ids = MVPFunctions.getMioSingolo().search();
//per ogni id prendi l'elemento con tutti i valuori di risposta
items = new ArrayList<HashMap<String, Object>>();
for(int i=0; i < ids.size(); i++){
items.add(MVPFunctions.getMioSingolo().getItem(ids.get(i)));
}
return true;
}
@Override
protected void onPreExecute(){
/*
* This is executed on UI thread before doInBackground(). It is
* the perfect place to show the progress dialog.
*/
progressDialog = ProgressDialog.show(getActivity(), "Wall", "Downloading Content...");
}
@Override
protected void onPostExecute(final Boolean success) {
mDownloadTask = null;
// dismiss the dialog after getting all products
progressDialog.dismiss();
//showProgress(false);
if (items.get(0).get("status error")!= null){
Toast.makeText(getActivity(), "status error = " + items.get(0).get("status error"), Toast.LENGTH_LONG).show();
Log.i("status error put toast", (String) items.get(0).get("status error"));
//fai qualcosa, tipo torna indietro, ecc
}
// updating UI from Background Thread
ListViewAdapter adapter = new ListViewAdapter(getActivity(),R.layout.listview_item_row, items, icon);
// updating listview
listView.setAdapter(adapter);
}
@Override
protected void onCancelled() {
mDownloadTask = null;
//showProgress(false);
}
}
}
最佳答案
如果您可以按预期看到带有项目的 ListView ,那么执行项目单击的下一个最简单的方法是为该类实现 OnItemClickListener
。这里,
public class CompraFragment extends ListFragment implements OnItemClickListener
然后添加未实现的方法,然后像往常一样做 - 第三个参数将是点击项目的位置并切换它,你为下一个 Activity 调用你的 Intent。
关于android - 如何使自定义 ListView 可选择并启动新的 Activity/fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687275/
我需要默认提供多项选择,这样用户就不必按住 ctrl。希望得到一些帮助,谢谢。 最佳答案 $("#selectable").selectable(); $("#selectable").on(
有没有一种简单的方法可以在 Cocoa 中创建一个可选择的 NSRect?需要一个可以选择并在单击鼠标后保持选中状态的矩形。 谢谢。 最佳答案 NSRect 只是一个具有位置和大小的结构。它不是一个实
我不知道我使用 jQuery UI 的 .selectable() API 是否完全错误。该脚本的预期结果是在选择黑框 (div) 期间简单地获得一些警报: http://jsfiddle.net/j
我试图创建两个可选择的 div。 div 应该表现得像按钮。我希望能够使用左右箭头选择其中一个 div。到目前为止,我能够使用这段代码实现这一点 document.addEventListener("
你好 StackOverFlow 社区, 我有一个标准的 UIBezierPath 如下: let π:CGFloat = CGFloat(M_PI) override func drawRect(r
我有一个 WPF TextBox白色背景。我给了它一些 Padding这样文本周围就有一个“边距”(类似于 MS Word 中的边距)。 然而,与 Word 不同的是,文本周围的这个空白区域不是“事
我的问题:我动态生成列表,并且我想让它们可供选择。 例如: function gen() { //list generation $('#blank').append(listHtml
我已经为我的 DatePicker View 设置了一个 minDate() 。现在的问题是我仍然可以从指定的最短日期之前的日期中进行选择。 我的java: long thirtyDaysInMill
我正在使用 SWT 库在 Eclipse 中创建一个向导页面。到目前为止,我已成功创建页面,但只有一个问题:- 未选择 SWT 复合 Material 。 我的向导页面包含一个 scrolledCom
https://www.youtube.com/watch?v=SR28jj4nTEkthis是链接][1] 我想了解如何使 TextView 可选,选择并复制此链接,但此链接已失效,无法通过此链接访
我一直在 Android Studio 中开发一个简单的计算器应用程序。结果窗口(放置数字用于计算的位置)我最初设置为 TextView。但是,我还没有找到在使用 TextView 时实现光标的方法。
我正在尝试获得类似于 Facebook 使用的设置(如果他们使用 UITextView)。我希望自动检测链接,但我不希望 UITextView 中的任何其他文本可选。因此,用户可以单击链接但无法选择任
我想要一个不可选择的 UITableViewCell,而其附属 View (在我的例子中是 UISwitch)是可编辑的。 问题是我还有另外两个单元,其中一个需要保持事件状态;这与 iOS 日历应用程
我想知道 jQuery UI Selectable 上是否有一个选项可以让我禁用 Ctrl+Click,但仍保持可拖动以进行多项选择。在我的项目中,我希望人们能够选择多个,但只能通过拖动,而不是通过
这个问题在这里已经有了答案: Jquery selectable for range selection (slider behaviour) (3 个答案) 关闭 2 年前。 我想使用类似于 jQ
所以我几个小时以来一直在寻找解决方案,但我就是找不到我的错误。我使用循环创建了 JCheckBoxes 并将其添加到滚动面板中。但如果我检查它们,isSelected() 总是返回 false。 im
我想让 EditText 或 Textview 在我的 android 项目中可选。项目适用于 android 4.0+。我添加了这个:txtView.setTextIsSelectable(true
所以我有一张 Accordion 风格的 table 。单击一行时,会显示五个单选按钮。然后,用户应该能够单击这些按钮。它成功显示了按钮,但是当单击按钮时,它不是突出显示所选按钮,而是缩小了行本身。我
我有一大堆可选择的对象。 您可以单击它们,然后它们的 ID 会添加到表单中,取消选择它们时,它会再次从表单中删除。 我有一个工作版本,直到我注意到有时如果你点击太快,id 会被添加多次。 为了禁止这种
当我们已经在 html 页面中有 onselectstart="return false;" 时,有谁知道如何使用 javascript 使特定的 div 可选(复制/粘贴)
我是一名优秀的程序员,十分优秀!