我正在开发一个自定义视图,它实现像圆形菜单这样的Catch应用程序.花了很多时间后,我取得了一些进步,完成了多色的外半圆.现在,阅读Catch应用程序的开发人员为他的查询提供的答案,我遇到了类Path.Google Android Developer页面没有提供足够的材料来理解和熟悉Path.所以,请 ?任何人 ?
提前致谢.
在互联网上的教程中,他们在RecyclerView的Adapter中设置了OnClickListener,它们以两种方式定义它:在ViewHolder内部或在BindViewHolder内部.
我的问题是哪一个是更好的方法,请推荐任何其他方法(如果有的话)
1)在ViewHolder中:
public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
tvSrc = (TextView) itemView.findViewById(R.id.tvSrc);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "inside viewholder position = " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
2)在BindViewHolder里面
public void onBindViewHolder(DisplayTrainsAdapter.ViewHolder viewHolder, final int position) {
viewHolder.tvSrc.setText(mDataset.get(position).strSrc);
viewHolder.tvSrc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "position = " + getItemId(position), Toast.LENGTH_SHORT).show();
}
});
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个带有Cards作为其主要视图类型的RecyclerView.我想要实现的是当用户点击某个项目时,该项目的ViewType从卡片更改为另一个Viewtype(例如,列表文本视图可以水平滚动).
我的RecyclerView适配器代码如下:
在下面的代码中,我创建了一个枚举类型的arrraylist来跟踪recyclerview中每一行的点击状态,然后我得到了我的数据集的大小,并用SHOW_PRIMARY_CONTENT为每一行初始化了我的arraylist
public class DisplayItemsAdapter extends RecyclerView.Adapter<DisplayItemsAdapter.ViewHolder> {
private static ArrayList<clickedState> itemClickedState;
private enum clickedState {
SHOW_PRIMARY_CONTENT,
SHOW_SECONDARY_CONTENT
}
private ArrayList<ItemData> mDataset = new ArrayList<>();
public DisplayItemsAdapter(ArrayList<ItemData> dataset) {
mDataset = dataset;
itemClickedState = new ArrayList<>();
for (int i = 0; i < mDataset.size(); i++) {
itemClickedState.add(i, clickedState.SHOW_PRIMARY_CONTENT);
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我的ViewHolder类,它包含对我所有子视图的引用,它实现了View.OnClickListener.为什么它实现View.OnClickListener是为了能够在单击状态之间切换以相应地更改viewTypes.
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView tvItemName;
TextView tvItemNumber;
public ViewHolder(View itemView) {
super(itemView);
tvItemName = (TextView) itemView.findViewById(R.id.tvItemName);
tvItemNumber = (TextView) itemView.findViewById(R.id.tvItemNumber);
tvTicketClass = …Run Code Online (Sandbox Code Playgroud) 我想在api 16下面使用chrome自定义选项卡.我的应用程序支持Min SDK版本高达10(GingerBread).当我在build.gradle中声明customtabs依赖项时
它给出以下错误:
错误:任务':app:processDebugManifest'的执行失败.清单合并失败:uses-sdk:minSdkVersion 10不能小于库中声明的版本15 [com.android.support:customtabs:23.0.1]建议:使用工具:overrideLibrary ="android.support.customtabs"强制使用
我如何使用默认浏览器和api 16以及customtabs在api 16下使用SDK来实现支持设备的机制.
我尝试使用phantomjs-maven-plugin来安装phantomjs二进制文件.我想在Tomcat7服务器上运行我的测试,这就是我需要自动配置二进制文件的原因.
这是我的pom.xml
<properties>
<ghostdriver.version>1.2.0</ghostdriver.version>
<phantomjs.version>1.9.7</phantomjs.version>
<phantomjs-maven-plugin.version>0.7</phantomjs-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
<dependency>
<groupId>com.github.detro</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>${ghostdriver.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core" -->
<artifactId>jersey-container-servlet</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.21</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>com.github.klieber</groupId>
<artifactId>phantomjs-maven-plugin</artifactId>
<version>${phantomjs-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
<configuration>
<version>1.9.7</version>
</configuration> …Run Code Online (Sandbox Code Playgroud) java maven phantomjs selenium-webdriver phantomjs-maven-plugin